Ios 导航栏中隐藏的后退按钮(但仍有效)

Ios 导航栏中隐藏的后退按钮(但仍有效),ios,xcode,swift,swift2,xcode7,Ios,Xcode,Swift,Swift2,Xcode7,我读过类似的问题,问题是由多个导航控制器引起的,但我只有一个。这是我的导航流程 VC=UIViewController,NC=UINavigationController VC1-模式->NC-根->VC2-显示->VC3 VC1未嵌入导航控制器中,我将使用PerformsgueWithIdentifier:sender:启动该模式序列 VC2然后使用showsegue来呈现VC3,此时后退按钮不可见。但它仍然有效。但是,如果我退出到主屏幕,然后再次进入应用程序,它确实会出现,如下所示: 知道

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

VC=UIViewController,NC=UINavigationController

VC1-模式->NC-根->VC2-显示->VC3

VC1嵌入导航控制器中,我将使用PerformsgueWithIdentifier:sender:启动该模式序列

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

知道为什么会这样吗

编辑:为了让事情变得清晰:我希望按钮既可见又正常工作(问题不是它在工作,而是它被隐藏了)

编辑2:

如果我将导航流更改为此

NC-根->VC2-显示->VC3

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

试试这个

隐藏

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")
}

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


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

结果,我将NavigationBar tint color设置为“Clear”。一旦我更改了它,就会出现“后退”按钮。

您应该隐藏视图上的导航后退按钮是否会出现在VC3中?这使得按钮既隐藏又不起作用。你能添加一些VC的代码吗?可能是初始化和viewDidLoad?当前模式未嵌入导航控制器,这就是添加此按钮时按钮不显示的原因按钮变得不可见也不起作用(以前它起作用)。您希望隐藏按钮或其他我希望按钮既可见又正常工作。这似乎没有任何区别。在我退出主屏幕并再次进入应用程序之前,该按钮仍处于隐藏状态。
backBarButtonItem
显然是
nil
,这可能与问题有关?编辑:不是,即使属性变为可见,它仍然是
nil
。。。