【发布时间】:2011-01-26 07:14:44
【问题描述】:
我正试图围绕 Cocoa Touch 中的控制器展开思考。主要问题是我希望一次“在屏幕上”有多个控制器——我希望有一个大视图(带有控制器 A),由它们自己的控制器(比如 B)控制的较小视图组成。我希望这样,因为除法使代码更清晰。不好的是,额外的控制器(B 类)不是屏幕上的“一等公民”,例如它们不会收到自转查询和通知。 (并且不能轻易显示模态控制器,它们必须将presentModal… 消息发送给它们的父控制器。)
从 Cocoa 的角度来看,A 和 B 控制器有什么区别?系统是否保留了某种指向“最前端控制器”的指针,它是向其发送通知和诸如此类的东西的特权控制器?为什么其他控制器不接收它们,即使它们的视图在屏幕上?将多个控制器“显示在屏幕上”是否被视为黑客行为?或者它是否受支持而我只是错过了一些观点?谢谢。
关于我要解决的问题的更多信息:我正在编写一个简单的照片浏览器。照片全屏显示,用户可以左右滑动切换照片。 A 控制器负责滚动部分,B 控制器负责每张照片本身。
隔离 B 似乎是个好主意,因为照片是从网络加载的,并且可能会发生很多事情,例如网络可能已关闭等等。在 B 控制器中,代码相当简单,因为 B 仅适用于一张特定的照片。如果我将代码移到 A 控制器,事情就会变得一团糟。
我不喜欢当前解决方案的唯一一点是我必须手动解决 B 不是“一流”控制器的问题。我必须通过 A 手动将一些调用传递给 B,当 B 想要显示模式对话框时,它必须将 presentModal… 发送给 A。这很难看。
【问题讨论】:
标签: iphone cocoa-touch uiviewcontroller