我有一个iPhone应用程序,我试图让它普及。
我添加了一个拆分视图控制器,其主控和详细VC都嵌入在导航控制器中,因此导航栏会在两者同时可见时显示,我可以添加displayModeButtonItem()
和所有。
问题是,在iPhone上,当一次只能看到其中一个VC时,细节VC嵌入的额外导航控制器将导致后退按钮在显示细节segue上闪烁。
差别很微妙,但这真的让我烦恼。
在GIF中,它看起来并不像实际的iPhone那么糟糕,但你可以看到差异。就像使用额外的导航控制器一样,后退箭头会自动显示,然后“阅读”标签就会赶上。另一方面,如果没有额外的导航控制器,后退箭头和“阅读”标签会同时显示(注意,你会看到它,哈哈)。
为了解决这个问题,我尝试更改segue,这样当点击主VC中的表视图行时,我会直接转到VC的实际细节,绕过它的导航控制器。这似乎最初起作用,但它导致了其他问题。例如,如果我在iPad上并且我将其他VC推到了详细VC的顶部,然后在主VC上挖了另一行,那么细节VC就不会弹回到它的根VC,即使我明确告诉它在didSelectRowAtIndexPath
。
我在这里做错了什么,或者只是UISplitViewController
怪癖?有谁知道如何解决或解决它?
谢谢!
答案 0 :(得分:2)
好的,我明白了。
当问题发生时,我在详细信息VC viewDidLoad
中有了这个:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem()
self.navigationItem.leftItemsSupplementBackButton = true
}
我注意到问题是由设置leftBarButtonItem
引起的。所以我把它改成了这个,现在效果很好:
override func viewDidLoad() {
super.viewDidLoad()
if self.splitViewController?.collapsed == false {
self.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem()
self.navigationItem.leftItemsSupplementBackButton = true
}
}