gpt4 book ai didi

ios - UIViewController 中的 UINavigationController 以编程方式在类中

转载 作者:行者123 更新时间:2023-11-28 09:07:48 25 4
gpt4 key购买 nike

我正在尝试以编程方式将导航 Controller 添加到我的 UIViewController 子类(我没有使用 Storyboard ),我想找到初始化它并进行配置的最佳位置。

我已经尝试了 viewDidLoad( View 不是由 init 初始化的)和一个方便的 init(只是为了确定)方法但是没有运气。

这是我创建它的方式:

  override init!(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
let nav = UINavigationController(rootViewController: self)
}

放置此逻辑的最合适方法是什么?我想将此逻辑包含在此 VC 中。

我可以通过创建导航来完成此操作。使用来自呈现 VC 的根 vc,但这会泄漏此逻辑,我宁愿不这样做。

最佳答案

我不确定这是否是您要查找的内容,但您可以在要呈现的 Controller 的方法中放置一些逻辑,以确定它是否应该与导航 Controller 一起呈现;这样做意味着呈现 View Controller 不需要知道它呈现的 Controller 是否嵌入在导航 Controller 中。呈现 Controller 将在实例化您的 Controller 后调用此方法。呈现的 Controller 可能看起来像这样,

class NextViewController: UIViewController {

var wantsNavigationcontroller = true


func viewControllerWithOrWithoutNavigationController() -> UIViewController {
if wantsNavigationcontroller {
let nav = UINavigationController(rootViewController: self)
return nav
}else{
return self
}
}
}

呈现 Controller 会这样做,

@IBAction func PresentNextcontroller(sender: UIButton) {
var nextVC = NextViewController()
self.presentViewController(nextVC.viewControllerWithOrWithoutNavigationController(), animated: true, completion: nil)
}

关于ios - UIViewController 中的 UINavigationController 以编程方式在类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30335748/

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