【问题标题】:How to Programmatically Segue to a New ViewController in a New Storyboard如何以编程方式在新 Storyboard 中 Segue 到新 ViewController
【发布时间】:2015-11-24 01:00:51
【问题描述】:

我只是想知道如何在新的故事板中切换到新的视图控制器,而不必以编程方式创建新的视图控制器。

情景: 我有一个完全用代码创建的视图控制器,系统认为我在 Storyboard A 中。我想从这个视图控制器转移到 Storyboard B 中包含的另一个视图控制器。

  1. 如果这个视图控制器是用 Storyboard 创建的,我可以创建一个附加到 Storyboard 引用的 segue(这是一个很好的建议)。但它在代码中,所以我不能这样做。
  2. 我的另一个选择是让下一个视图控制器完全用代码创建,这样我就可以在不使用 segues 的情况下呈现它。这很痛苦,但会起作用。
  3. 我的第三个选择是在代码中初始化新的故事板,使用故事板标识符在代码中初始化新的视图控制器,然后使用导航控制器来继续它。

如果还有其他我不知道的选项,请在下面列出!

【问题讨论】:

    标签: ios swift segue


    【解决方案1】:

    这段代码允许您在应用程序中的任何位置连接到任何 viewController,同时仍然能够使用故事板构建您的 viewController。

    func settingsButtonPressed(sender:UIButton) {
        let storyboard = UIStoryboard(name: "AccountLinking", bundle: nil)
        let linkingVC = storyboard.instantiateViewControllerWithIdentifier("AccountLinkingTable")
        self.navigationController?.pushViewController(linkingVC, animated: true)
    }
    

    多亏了这个小功能,节省了很多时间。

    【讨论】:

    • 当你调用instantiateViewControllerWithIdentifier时,这不是以编程方式创建viewController吗?
    • 我应该编辑我的声明,说您可以在情节提要中构建视图控制器。是的,它以编程方式创建它们。
    【解决方案2】:

    我会敦促阅读本文的任何人查看 Xcode 7 中引入的 Storyboard Reference 以实现此目的,而不是以编程方式加载情节提要。

    【讨论】:

      【解决方案3】:

      您可以覆盖以下函数来覆盖 segue 调用。

      override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
      
         var destinationController = segue.destinationViewController
      
      }
      

      【讨论】:

        猜你喜欢
        • 2018-04-26
        • 1970-01-01
        • 1970-01-01
        • 2014-07-27
        • 2018-12-04
        • 1970-01-01
        • 2017-05-12
        • 1970-01-01
        • 2019-03-18
        相关资源
        最近更新 更多