ios - unwind segue 将数据传递给不同的 View Controller

标签 ios iphone swift segue unwind-segue

我有一个有 4 种不同形式的应用程序。这些表格可以通过单击不同的问题并引导至包含选项的 View Controller 来完成。我们将其称为OptionViewController。现在我有 4 种不同的表单,具有不同的选项,但都使用 OptionViewController 从数据库中提取数据,我需要展开转场并传递数据。

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

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

        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 ,这可以解决我的问题,但我不确定应用程序的整体性能是否会由于 View Controller 的增加而下降

感谢您提前提供的帮助

最佳答案

要测试目标 View Controller 是否属于特定类,请使用 Swift 关键字 is:

if segue.destinationViewController is FirstViewController {

或者,您可以使用可选绑定(bind)可选强制类型转换将 viewController 分配给一个变量:

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

关于ios - unwind segue 将数据传递给不同的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37513642/

相关文章:

iphone - 如何使用 uiwebview 打开需要用户名和密码的 url?

ios - 为什么我在 Swift 4 中解析 JSON 后得到一个空白的 UITableView?

Swift 4 计时器因 NSException 而崩溃

ios - 如何将后续文本添加到 uitextfield

iphone - CABasicAnimation 如何让它变得简单

objective-c - iOS Objective-C - JSON 字符串到 NSDictionary 异常

iphone - 无法在 XCode 中将 socket 从 Storyboard 拖动到助理编辑器

ios - 在没有启动屏幕的情况下强制 iPad Pro 达到全分辨率

iphone - 通过 URL 方案访问 TomTom 导航解决方案

html - 未获取 HTML 模板的路径