我有一个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)
未执行ViewController
或prepareForSegue
没有看到数据变量,如何从按钮点按传递数据?有什么建议吗?
答案 0 :(得分:0)
您必须在必要时使用类别。相反,如果需要在子模块上划分大类,则应使用类和复合模式。类别覆盖类上的方法并以未定义的顺序加载,具有实现相同方法的多个类别可能导致非常难以调试的问题。类别不允许您在实例中存储任何内容而不使用相关对象,这些对象比ivars更难以且费用更高。