【问题标题】:Back button hidden in navigation bar (but still works)隐藏在导航栏中的后退按钮(但仍然有效)
【发布时间】:2016-02-18 10:37:42
【问题描述】:

我读过类似的问题,问题是由多个导航控制器引起的,但我只有一个。这是我的导航流程。

VC = UIViewController, NC = UINavigationController

VC1 -modal-> NC -root-> VC2 -show-> VC3

VC1 没有在导航控制器中嵌入,我正在使用 performSegueWithIdentifier:sender: 启动该模态转场。

VC2 然后使用show segue 来呈现VC3,这是不可见后退按钮的那个。它仍然有效。但是,如果我退出到主屏幕然后再次进入应用程序,它确实会出现,如下所示:

https://gfycat.com/VelvetyThisHamster.

任何想法为什么会发生这种情况?

编辑:为了清楚起见:我希望按钮既可见又能正常工作(问题不是它在工作,而是它被隐藏了)

编辑 2:

如果我将导航流程更改为此

NC -root-> VC2 -show-> VC3

然后后退按钮按预期工作。所以问题是,如何在第一个导航控制器之前添加一个没有导航控制器的常规视图控制器?我之前想要它,因为 VC1 不应该有导航栏,而 VC2 应该以模态方式呈现。

【问题讨论】:

  • 你应该隐藏导航返回按钮,视图会出现
  • 在 VC3 中?这使得按钮既隐藏又不起作用。
  • 你能添加一些那个VC的代码吗?大概是初始化和viewDidLoad?
  • 当前模式没有嵌入导航控制器,这就是它没有显示的原因

标签: ios xcode swift swift2 xcode7


【解决方案1】:

试试这个

隐藏

override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)

 //use this
self.navigationItem.setHidesBackButton(true, animated: false)
//else use this

 self.navigationItem.leftBarButtonItem = nil


}

显示

override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)

 //use this
self.navigationItem.setHidesBackButton(false, animated: false)
 //else
 self.navigationController.navigationItem.backBarButtonItem.enabled = TRUE

}

更新

  override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)

 //use this
self.navigationItem.setHidesBackButton(false, animated: false)
 //else
   let backButton  = UIBarButtonItem(title: "leftbutton", style: UIBarButtonItemStyle.Plain, target: self, action: "buttonMethod")

  self.navigationItem.leftBarButtonItem = backButton

}



 func buttonMethod() {
    print("Perform action")
}

【讨论】:

  • 添加此按钮时,按钮既不可见也不功能(之前是功能)。
  • 你想隐藏按钮,否则
  • 我希望按钮既可见又能正常工作。
  • 它似乎没有任何区别。在我退出主屏幕并再次进入应用程序之前,该按钮仍处于隐藏状态。
  • backBarButtonItem 显然是nil,这可能与问题有关?编辑:不是,该属性仍然是nil,即使它变得可见......
【解决方案2】:

我想我找到了问题的根源,所以我会在这里发布,以防其他人遇到同样的问题。

VC1 和 NC 之间的模态表示是从后台队列中进行的(准确地说是在 NSURLSessionDataTask 的完成处理程序中调用 performSegueWithIdentifier:sender:)。通过将该行代码分派到主队列,问题似乎消失了。

【讨论】:

    【解决方案3】:

    结果,我将 NavigationBar 的色调设置为“清除”。一旦我改变它,后退按钮就会出现。

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      相关资源
      最近更新 更多