self.navigationController 始终为零
self.navigationController is always nil
UI流量:
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
}
以上工作正常。然后,从 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)
问题是在我的 PFQueryTableViewController
的 viewDidLoad
和 viewDidAppear
中,以下语句总是 nil
:
// navitaionController is nil
self.navigationController!.navigationBar.translucent = false
那么如何在导航控制器中正确实例化 PFQueryTableViewController?
您正在实例化 OrdersVC
而不是实例化它嵌入其中的导航控制器,它是故事板的 "initial" 视图控制器。使用 instantiateInitialViewController
而不是使用标识符。
let nav = storyboard.instantiateInitialViewController()
self.window!.rootViewController = nav
混淆的原因是您 "unlinking" 故事板中的初始视图控制器与您的登录控制器。您必须将初始视图控制器添加回主 window.
UI流量:
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
}
以上工作正常。然后,从 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)
问题是在我的 PFQueryTableViewController
的 viewDidLoad
和 viewDidAppear
中,以下语句总是 nil
:
// navitaionController is nil
self.navigationController!.navigationBar.translucent = false
那么如何在导航控制器中正确实例化 PFQueryTableViewController?
您正在实例化 OrdersVC
而不是实例化它嵌入其中的导航控制器,它是故事板的 "initial" 视图控制器。使用 instantiateInitialViewController
而不是使用标识符。
let nav = storyboard.instantiateInitialViewController()
self.window!.rootViewController = nav
混淆的原因是您 "unlinking" 故事板中的初始视图控制器与您的登录控制器。您必须将初始视图控制器添加回主 window.