swift2 导航控制器始终为空

cclgggtu  于 2022-11-06  发布在  Swift
关注(0)|答案(1)|浏览(197)

UI流程:
LoginViewController

  • —〉
    LoginViewController(不在情节提要中)
  • —〉
    导航控制器(在情节提要中)
  • —〉
    名为"OrdersVC"PFQueryTableViewController(在情节提要中)
    这是带有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)

问题是在我的PFQueryTableViewControllerviewDidLoadviewDidAppear中下面的语句总是nil

// navitaionController is nil
self.navigationController!.navigationBar.translucent = false

那么,如何在PFQueryTableViewController的导航控制器中正确地示例化它呢?

yh2wf1be

yh2wf1be1#

您正在示例化OrdersVC,而不是示例化它所嵌入的导航控制器,该导航控制器是情节提要的“初始”视图控制器。请使用instantiateInitialViewController而不是使用标识符。

let nav = storyboard.instantiateInitialViewController()
self.window!.rootViewController = nav

造成混乱的原因是您正在将初始视图控制器从故事板与登录控制器“取消链接”。您必须将初始视图控制器添加回主窗口。

相关问题