我理解AppDelegate中的概念。
基础知识是这样的:
let mainStoryboard: UIStoryboard = UIStoryboard(name: “Main”, bundle: nil)
var mainViewController = mainStoryboard.instantiateViewControllerWithIdentifier(
“MainViewController”) as! UIViewController
var navController = UINavigationController(rootViewController: mainViewController)
self.window?.rootViewController = navController
self.window?.makeKeyAndVisible()
这将成功使你的mainViewController成为一个NavigationController和函数。
我不想在AppDelegate中这样做。
我有一个名为A的UIViewController,其中不是包含在UINavigationController中。从A,我现在做的是performSegueWithIdentifier
到另一个名为B的UIViewController。我想以编程方式使B包含在UINavigationController中。我不想在故事板中实现这一点。这必须以编程方式完成。
我想我必须使用mainStoryboard.instantiateViewControllerWithIdentifier(...)
来实例化B,然后将它包装在A中某处的UINavigationController中(最好是我打算转到B的地方)。那么,除了performSegueWithIdentifier
以外,我到达了B?因为如果我执行segue,那么它将不会转到包含在UINavigationController中的B。
我希望这不是太复杂,但如果一切都没有意义,我可以提供细节。
答案 0 :(得分:2)
除了实际显示新的视图控制器之外,您可以采用的方法类似于代码示例中的方法。假设您在视图控制器A中有一个应该显示视图控制器B的方法,您可能会这样做:
func showViewControllerB() {
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewControllerB = mainStoryboard.instantiateViewControllerWithIdentifier("ViewControllerB") as! ViewControllerB
let navController = UINavigationController(rootViewController: viewControllerB)
presentViewController(navController, animated: true, completion: nil)
}