gpt4 book ai didi

swift - 如何在 Swift 中调用现有的导航 Controller

转载 作者:搜寻专家 更新时间:2023-11-01 05:48:43 27 4
gpt4 key购买 nike

我的 Storyboard中有 3 个项目。 1. viewController (A) 连接到 2. Navigation controller 和 3. viewController (B) 没有连接到任何东西所有 3 个项目都在 Storyboard中设置了恢复标识符。

viewController (B) 是初始 View Controller 。我正在尝试在 B 中获取 A 所附加的导航 Controller ,但始终返回 nil:

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyBoard.instantiateViewControllerWithIdentifier("viewControllerA") as! ViewControllerA
print(vc.navigationController?) // always prints nil

为什么!?

更新#1我不能像 View Controller 那样声明 UINavigationController。我尝试将 ID 为“myNavigationController”的导航 Controller 设置为 Storyboard ID:

当 Storyboard,我得到这个错误

let navigationController = storyBoard.instantiateViewControllerWithIdentifier("myNavigationController") as! UINavigationController
print(self.navigationController!) // fatal error: unexpectedly found nil while unwrapping an Optional value

我也试过在恢复标识符中设置 id,它在实例化行之前被轰炸了

@ColdLogic,看看我在整个项目中搜索该标识符时得到的结果:

enter image description here

最佳答案

因为您从未实例化导航 Controller ,所以您实例化了 View Controller A。如果您希望像在 Storyboard 中一样设置导航 Controller 和 View Controller ,您会想要这样的东西

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let navigationController = storyBoard.instantiateViewControllerWithIdentifier("YourNavControllerIdentifier") as! UINavigationController
let vc = navigationController.topViewController as! ViewControllerA

您的代码直接实例化了一个 ViewControllerA 类型的对象。除非您设置逻辑来执行此操作,否则默认情况下没有导航 Controller 。

关于swift - 如何在 Swift 中调用现有的导航 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38122601/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com