使用自定义后退按钮后导航标题消失

Posted

技术标签:

【中文标题】使用自定义后退按钮后导航标题消失【英文标题】:Navigation title disappears after use of custom back button 【发布时间】:2015-09-08 10:12:07 【问题描述】:

我有 3 页

第 1 页:菜单 第 2 页:菜单 > 导航控制器 > 地图列表视图 第 3 页:菜单 > 导航控制器 > 地图

可以在第 2 页和第 3 页之间切换,但是当您单击“返回”时,它总是会转到第 1 页,我使用自定义后退按钮进行了此操作。

使用自定义后退按钮后,一旦出现以下问题: 当我从菜单页面(第 1 页)转到第 2 页或第 3 页时,导航标题出现,不到一秒钟它就消失了。这怎么可能?

这些是我正在使用的功能:

private func hideAndAddNewBackButton()
    if backToRoot
        self.navigationItem.hidesBackButton = true
        let newBackButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "back:")
        self.navigationItem.leftBarButtonItem = newBackButton;
        self.title = "Locaties"
    


func back(sender: UIBarButtonItem) 
    if let viewController2 = storyboard!.instantiateViewControllerWithIdentifier("ViewController2") as? ViewController2
        self.navigationController?.pushViewController(viewController2, animated: true);
    


func needBackToRoot()
    backToRoot = true;

这是在我的 viewDidLoad() 中:

var backToRoot:Bool = false;

override func viewDidLoad() 
    super.viewDidLoad()
    self.hideAndAddNewBackButton();

我的开关按钮:

@IBAction func showLijst(sender: AnyObject) 
    if let viewController3 = storyboard!.instantiateViewControllerWithIdentifier("Lijst") as? KaartListview
        viewController3.needBackToRoot();
        self.navigationController?.pushViewController(viewController3, animated: true);
    

【问题讨论】:

【参考方案1】:

在我的情况下,问题是创建自定义后退按钮并在推送控制器中设置 self.navigationController?.navigationBar.topItem?.title = "" 我的解决方案是:

override func viewWillAppear(_ animated: Bool) 
        super.viewWillAppear(animated)
        navigationController?.isNavigationBarHidden = false
          self.navigationController?.navigationBar.topItem?.title = "SomeTitle"

    

【讨论】:

【参考方案2】:

我之前遇到过类似的问题,我通过以下方式解决了:

navigationController?.navigationBarHidden = false

viewDidLoad()函数中

像这样:

override func viewDidLoad() 
    super.viewDidLoad()

    navigationController?.navigationBarHidden = false

【讨论】:

你把它放在缺少导航栏的viewController中了吗?另外,您是否在 storyBoard 中查看了显示导航栏的视图控制器操作系统? 是的,它在情节提要中可见,我也确信它在正确的视图控制器中。我注意到的是,当我使用第 2 页上的自定义按钮时它确实有效,但当我使用第 3 页上的自定义按钮时它不起作用 第 3 页是指您的 viewController #3 对吗?如果是这样,请在viewDidLoad() 中添加navigationController?.navigationBarHidden = false,如果您已经这样做但它不起作用,请尝试在viewWillAppear() 中这样做。我现在能想到的就这些了。 问题是我在菜单和其他页面之间使用了导航控制器......我不通知这个很糟糕。

以上是关于使用自定义后退按钮后导航标题消失的主要内容,如果未能解决你的问题,请参考以下文章

按下后退按钮时的自定义动画 - iOS

导航栏中的 Swift 自定义后退按钮

创建自定义导航栏渲染器以在 xamarin 表单 IOS 项目中添加自定义后退按钮图标

iOS:默认后退按钮显示在自定义左侧导航按钮上

自定义导航控制器的后退按钮

导航栏控制器中的自定义后退按钮