【问题标题】:unwind segue pass data to different viewcontrollers展开 segue 将数据传递到不同的视图控制器
【发布时间】:2016-05-29 18:50:15
【问题描述】:

我有一个有 4 种不同形式的应用程序。这些表格可以通过点击不同的问题并被引导到一个包含选项的视图控制器来完成。让我们称之为OptionViewController。现在我有 4 种不同的表单,有不同的选项,但都使用 OptionViewController 从数据库中提取数据,我需要展开 segue 并传递数据。

由于它可能来自 4 个不同的视图控制器,我需要确保正确传递信息,即确定 unwindsegue 的目标视图控制器是否正在执行第一个、第二个、第三个或第四个视图控制器。

我想我可能会做这样的事情

        override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.

    if segue.identifier == "optionSelected" {

        if segue.destinationViewController == FirstViewController {

             //pass data

        } else if segue.destinationViewController == SecondViewController {
             //pass data
        }

    }
}

但显然我无法执行segue.destinationViewController == FirstViewController

我实际上应该做什么?或者我应该为每个表单创建一个OptionViewController,这将解决我的问题,但我不确定整体应用程序性能是否会由于视图控制器的增加而下降

提前感谢您的帮助

【问题讨论】:

  • 试试if segue.destinationViewController is FirstViewController {。或if let dvc = segue.destinationViewController as? FirstViewController {.
  • 感谢您的快速建议。那是因为我的 unwind segue 方法是通过 ctrl 拖动我的视图控制器退出。所以 unwind 将退出 OptionViewController 到前一个视图控制器,它可能是 4 个中的任何一个
  • vacawama if segue.destinationViewController is FirstViewController { 非常适合我。而不是==,我应该使用is。请将其发布为答案,以便我可以将其标记为已回答谢谢!

标签: ios iphone swift segue unwind-segue


【解决方案1】:

要测试目标视图控制器是否属于特定类,请使用 Swift 关键字is

if segue.destinationViewController is FirstViewController {

或者,您可以使用 optional bindingoptional cast 将 viewController 分配给变量:

if let dvc = segue.destinationViewController as? FirstViewController {
    // dvc will have type FirstViewController so you can access specific
    // properties of FirstViewController using dvc
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多