我想打开“选择城市”控制器,当selectedCityId为0(未定义)时 - 选择一个城市。在viewDidLoad()的根视图控制器(MainVC)中:
let selectedCityId = NSUserDefaults.standardUserDefaults().integerForKey("selectedCityId")
if(selectedCityId == 0){
self.performSegueWithIdentifier("startupSegue", sender: self)
} else {
....
}
所以startupSegue以模态方式打开settingsViewController(SettingsVC)!两者 - MainVC和SettingsVC都嵌入了导航视图控制器。
有2个警告:
在分离的视图控制器上呈现视图控制器是 气馁“myapp.MainVC:0x7fee8871e670”。
对开始/结束外观转换的不平衡调用 “UINavigationController:0x7fee8872c950”。
感谢您的回答。
答案 0 :(得分:5)
我有同样的警告并通过将代码移动到-viewDidAppear来修复它。您应该注意的一件事是-viewDidLoad只被调用一次,而如果页面变得可见,则可以多次调用-viewDidAppear,因此您需要添加其他机制以再次跳过执行segue。
答案 1 :(得分:2)
将代码移动到-viewDidAppear是一个好主意但我也建议从主线程执行你的seque调用:
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.performSegueWithIdentifier("startupSegue", sender: self)
})
Swift 3
DispatchQueue.main.async
{
self.performSegue(withIdentifier: "startupSegue", sender: self)
}