navigationController 在 swift 中为 nil

navigationController is nil in swift

我有两个故事板(Main 和 SB2)

我在 Main 的故事板中有一个视图控制器,在 SB2 中有一个 我执行

let SB2 = UIStoryboard(name: "SB2", bundle:nil)
let vc : UIViewController = self.SB2.instantiateViewControllerWithIdentifier("VC2")
self.showViewController(vc, sender: self)

在加载第二个 viewcontroller 并且此命令为 运行 后,它打印 nil:

print(self.navigationController) // prints nil

在 SB2(第二个故事板)中,我点击了 viewcontroller (VC2),然后点击了编辑器 > 嵌入 > 导航控制器。这放置了一个带有故事板的导航控制器,根视图控制器是 VC2。我三重检查了这个。它被连接的第一个标志是顶部的灰色导航栏。第二个是将导航控制器连接到 VC2 的 segue,我可以检查的最后一个地方是在导航控制器实用程序中。

我在想,也许我不应该直接从 VC1 过渡到 VC2,而是应该从 VC1 过渡到 NavigationController,但是我不知道该怎么做,甚至不知道该怎么做。

我不知道 sb2 何时在 face 导航控制器连接到它时打印 nil 。感谢任何帮助。

您需要将视图控制器 (VC2) 推到导航控制器上。

let SB2 = UIStoryboard(name: "SB2", bundle:nil)v
let nvc = SB2.instantiateViewControllerWithIdentifier("NVC") as! UINavigationController
let vc : UIViewController = self.SB2.instantiateViewControllerWithIdentifier("VC2")
nvc.pushViewController(vc, animated: true)

然后在你的视图控制器中尝试调用

self.navigationController

在你的故事板中, select初始ViewController。使用此视图控制器 selected,选择菜单项

Editor -> Embed In -> Navigation Controller