登录用户点击后会看到项目列表和相对详细信息视图。
登录后,服务器会告诉我列表中有多少项。如果它只包含一个项目,我应该跳过列表视图,只看细节。
目前我的Interface Builder设置为:
Login → (segue) → [NavigationController] → List → (push) → Detail →...
但是如果只有一个项目,导航控制器的根应该成为详细控制器:
Login → (segue) → [NavigationController] → Detail →...
所以我需要更改导航控制器的viewControllers
属性。在登录视图中,我可以在准备segue时访问导航控制器:
// Login View controller
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if itemsCount == 1 {
let navController = segue.destinationViewController as UINavigationController
let detailController = DetailViewController()
navController.setViewControllers([detailController], animated: false)
}
}
我无法按预期工作:当我运行代码时,它会显示详细信息视图,但我在其中设置的所有@IBOutlet
都有nil
值。
为什么呢?我做错了什么?
答案 0 :(得分:0)
您需要使用故事板的instantiateViewControllerWithIdentifier
函数来创建detailViewController
,而不是依赖于普通初始值DetailViewController()
。后者只是创建了一个类的新实例,而前者从故事板中读取VC细节并设置所有出口等。