ios - 返回按钮隐藏在导航栏中(但仍然有效)

标签 ios xcode swift swift2 xcode7

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

VC = UIViewController, NC = UINavigationController

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

VC1嵌入在导航 Controller 中,我使用 performSegueWithIdentifier:sender: 启动模式转场。

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

https://gfycat.com/VelvetyThisHamster .

有什么想法为什么会发生这种情况吗?

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

编辑2:

如果我将导航流程更改为这样

NC -root-> VC2 -show-> VC3

然后后退按钮将按预期工作。所以问题是,如何在第一个导航 Controller 之前添加一个没有导航 Controller 的常规 View Controller ?我之前想要它,因为 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")
}

关于ios - 返回按钮隐藏在导航栏中(但仍然有效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35479079/

相关文章:

iphone - 无法在 iPad 中添加 subview

c# - xamarin ios uilabel 问题

iphone - 某些 View 的 Xcode iphone 方向支持

iphone - 内部方法上的堆栈崩溃,仅有时发生(竞争条件?)并且仅在模拟器中发生

swift - 有没有办法在表格 View 中计算警报?

ios - iOS:只为UINavigationController的根目录隐藏一个viewcontroller的导航栏?

python - 是否有使用 PyObjC 编写的 iOS 应用程序示例?

ios - 如何将音频添加到 TableView 中的 UIButtons?

ruby - 将 Parse iOS SDK 与 RubyMotion 结合使用

swift - AlamoFire.Request 中的多个参数