在UIViewController与类别冲突之间传递数据

时间:2016-07-17 18:10:31

标签: ios objective-c cocoa-touch uiviewcontroller

我有一个ViewController课程。它有一个类别ViewController (Details),执行:

(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

打开项目的详细信息。

当我向ViewController课程添加新按钮时,我想将一些数据NSArray *myData传递给另一个控制器,例如SearchController。但是,我的prepareForSegue永远不会执行,因为它位于ViewController (Details)内。因此,将prepareForSegue添加到ViewController似乎忽略了它。

如果我在prepareForSegue内使用适用于我的ViewController (Details)的{​​{1}}的工作版本,但它没有看到SearchController中声明的iVar NSArray *myData。理想情况下,我不想声明要在ViewController中设置的新数据var,因为它无关紧要。

如果ViewController (Details)未执行ViewControllerprepareForSegue没有看到数据变量,如何从按钮点按传递数据?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您必须在必要时使用类别。相反,如果需要在子模块上划分大类,则应使用类和复合模式。类别覆盖类上的方法并以未定义的顺序加载,具有实现相同方法的多个类别可能导致非常难以调试的问题。类别不允许您在实例中存储任何内容而不使用相关对象,这些对象比ivars更难以且费用更高。