在视图控制器之间进行通信的最佳方式是什么?
作为目标c、可可和iPhonedev的新手,我强烈希望充分利用语言和框架。
我正在使用的资源之一是斯坦福大学的CS193P课程,这是他们在网络上留下的。它包括课堂讲稿、作业和示例代码,而且由于这门课程是由Appledev提供的,所以我肯定认为它是“从马嘴里来的”。
班级网站:
http:/www.stanford.edu/class/cs193p/cgi-bin/index.php
第08课与构建一个基于UINavigationController的应用程序有关,该应用程序有多个UIViewController被推入UINavigationController堆栈。UINavigationController就是这样工作的。这是合乎逻辑的。但是,幻灯片中有一些关于UIViewController之间通信的严厉警告。
我要引用这一系列的幻灯片:
http:/cs193p.stanford.edu/下载/08-NavigationTabBarControllers.pdf
第16/51页:
如何不共享数据
- 全局变量或单变量
- 直接依赖关系降低了代码的可重用性。
好的。我受够了。不要盲目地将用于在视图控制器之间通信的所有方法抛到应用程序委托中,并在app委托方法中引用viewController实例。还不错。
再往前看,这张幻灯片告诉我们应做。
第18/51页:
数据流的最佳实践
- 弄清楚
一点儿没错
需要传达什么 定义输入参数
用于视图控制器- 为了恢复层次结构,
使用松耦合
这张幻灯片之后是一张看上去像是保持式幻灯片的幻灯片,讲师随后用UIImagePickerController的例子演示了最佳实践。我希望录影带能提供!
好吧那么.。恐怕我的objc-fu没那么强壮。我也有点困惑,最后一行在上面的报价。我一直在谷歌上搜索这方面的内容,我找到了一篇似乎不错的文章,讨论了各种观察/通知技术的方法:
http:/cocoawithlove.com/2008/06/5
方法#5甚至指示委托为一种方法!除了.。对象一次只能设置一个委托。那么,当我有多个视图控制器通信时,我该怎么办呢?
好吧,那是密谋团伙。我知道我可以很容易地在app委托中使用我的通信方法,通过引用我的appagent中的多个视图控制器实例,但是我想做这样的事情右(边),正确的方式,道路。
请回答以下问题,帮助我“做正确的事情”:
- 当我试图在UINavigationController堆栈上推送一个新的视图控制器时,
谁
应该做这件事。哪一个
类/文件在我的代码中是正确的位置吗? - 当我想影响我的UIViewController中的某个数据(一个IPAR的值)时,我在
异类
UIViewController,做这件事的“正确”方法是什么? - 假设我们一次只能在一个对象中设置一个委托,那么当讲师说的时候,实现是什么样子的呢?
“为观察员定义通用接口(如委托)”
..如果可能的话,伪代码示例在这里非常有用。