2010-08-30 90 views

回答

4

有这样做的两种基本技术:

使用委托

定义为您的孩子一个简单的委托协议。像例如,如果你的孩子来挑选一些字符串从事情的清单,然后做一些事情,如:

@protocol ChildViewControllerDelegate <NSObject> 
-(void) childView: (ChildView*) didPickNameFromList: (NSString*) name; 
@end 

你的父母会简单地实现该委托协议,将有变化时作出选择要更新在客户端。

这是一种非常标准的技术,许多iOS附带的视图控制器也使用这种技术。例如,看看ABPeoplePickerNavigationControllerDelegate

使用共享(容器)对象)

,可以使用是使用共享对象,其中子视图控制器可以改变一个值的其它技术。父视图控制器创建此对象并保存对它的引用。当它显示子视图控制器时,它将对共享对象的引用传递给它,以便子对象可以在其上设置值。然后,当父母再次出现时,它可以根据该共享对象的值更新其状态。

我个人更喜欢技术#1。

0

其实我做了一些不同的事情。

我用子控制器中的parentController的类型声明了一个变量。

而在我推childController之前的parentController我这样做: objView.parentController = self;

然后我只是调用parentController.variableIwant = something;在儿童控制器和Voile上!

+0

从技术上讲,这将工作,但对于最大封装和可重用性,创建委托是最好的方法 – Brian 2010-09-01 14:33:54