【发布时间】: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