我已经阅读了类似的问题,其中问题是由多个导航控制器引起的,但我只有一个。这是我的导航流程。
VC = UIViewController,NC = UINavigationController
VC1 -modal-> NC -root-> VC2-显示 - > VC3
VC1 在导航控制器中不是嵌入,我使用 performSegueWithIdentifier:sender:启动该模式segue。
VC2 然后使用show
segue来显示 VC3 ,这是后退按钮不可见的那个。它仍然有效。但是,如果我退出到主屏幕然后再次进入应用程序, 会出现,如下所示:
https://gfycat.com/VelvetyThisHamster
为什么会发生这种情况?
编辑:为了清楚起见:我希望按钮既可见又有效(不是因为它正在解决问题,而是它隐藏了)< / p>
编辑2:
如果我将导航流程更改为此
NC -root-&gt; VC2-显示 - &gt; VC3
然后后退按钮按预期工作。所以问题是,如何在第一个导航控制器之前添加一个没有导航控制器的常规视图控制器?我之前想要它,因为VC1不应该有导航栏,VC2应该以模态方式呈现。
答案 0 :(得分:2)
试试这个
<强>隐藏强>
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")
}
<强>更新强>
select T1.id ,t1.details,t2.userName
from t1
inner join t2 on t1.user_id =t2.id
答案 1 :(得分:1)
我想我找到了问题的根源,所以我会在这里发布,以防其他人遇到同样的问题。
VC1和NC之间的模态表示是从后台队列中进行的(通过在NSURLSessionDataTask的完成处理程序中调用performSegueWithIdentifier:sender:
来准确)。通过将该行代码分派到主队列,问题似乎消失了。
答案 2 :(得分:1)
结果,我将NavigationBar色调颜色设置为&#34; Clear&#34;。一旦我改变了它,就会出现后退按钮。