【问题标题】:UINavigationController in UIViewController programmatically within classUIViewController 中的 UINavigationController 在类中以编程方式
【发布时间】:2015-05-19 20:42:34
【问题描述】:

我正在尝试以编程方式将导航控制器添加到我的UIViewController 子类(我没有使用情节提要),我想找到最好的位置来初始化它并进行配置。

我尝试了viewDidLoad(视图不是由init 初始化)和方便的init(只是为了确保)方法,但没有运气。

我是这样创建它的:

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

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

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

【问题讨论】:

    标签: ios swift uinavigationcontroller


    【解决方案1】:

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

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

    呈现控制器会这样做,

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

    【讨论】:

      猜你喜欢
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多