Pol*_*lis 3 uinavigationcontroller ios uistoryboard swift2
界面流程:
AppDelegate
-->
LoginViewController (不在故事板中)
-->
导航控制器(在情节提要中)
-->
PFQueryTableViewController (在故事板中)命名 "OrdersVC"
这是导航控制器OrdersVC:
这是我的AppDelegate:
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// ...
// initial VC
let VC = LoginViewController()
window = UIWindow(frame: UIScreen.mainScreen().bounds)
window!.rootViewController = VC
window!.makeKeyAndVisible()
return true
}
Run Code Online (Sandbox Code Playgroud)
以上工作正常。然后,从LoginViewController,然后我尝试显示我的故事板的初始 VC,它是托管PFQueryTableViewController. 请注意,LoginViewController它不在故事板中。
let destVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("OrdersVC") as! UITableViewController
// will throw "unexpectedly found nil"
let navController = UINavigationController(rootViewController: destVC)
navController.pushViewController(destVC, animated: true)
// will throw "unexpectedly found nil"
self.presentViewController(navController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
问题是在我PFQueryTableViewController的viewDidLoad和viewDidAppear以下声明中总是nil:
// navitaionController is nil
self.navigationController!.navigationBar.translucent = false
Run Code Online (Sandbox Code Playgroud)
那么如何在其导航控制器中正确实例化 PFQueryTableViewController 呢?
您正在实例化OrdersVC而不是实例化它嵌入的导航控制器,这是故事板的“初始”视图控制器。使用instantiateInitialViewController而不是使用标识符。
let nav = storyboard.instantiateInitialViewController()
self.window!.rootViewController = nav
Run Code Online (Sandbox Code Playgroud)
造成混淆的原因是您正在从情节提要中“取消链接”初始视图控制器与您的登录控制器。您必须将初始视图控制器添加回主窗口。
| 归档时间: |
|
| 查看次数: |
6395 次 |
| 最近记录: |