我无法将数据从childView传递到navigationController中的父视图,当用户单击后退按钮时。从childView传递数据做父视图!
我试过使用viewWillDisappear,它没有被调用。
任何意识?
我无法将数据从childView传递到navigationController中的父视图,当用户单击后退按钮时。从childView传递数据做父视图!
我试过使用viewWillDisappear,它没有被调用。
任何意识?
有这样做的两种基本技术:
使用委托
定义为您的孩子一个简单的委托协议。像例如,如果你的孩子来挑选一些字符串从事情的清单,然后做一些事情,如:
@protocol ChildViewControllerDelegate <NSObject>
-(void) childView: (ChildView*) didPickNameFromList: (NSString*) name;
@end
你的父母会简单地实现该委托协议,将有变化时作出选择要更新在客户端。
这是一种非常标准的技术,许多iOS附带的视图控制器也使用这种技术。例如,看看ABPeoplePickerNavigationControllerDelegate
。
使用共享(容器)对象)
,可以使用是使用共享对象,其中子视图控制器可以改变一个值的其它技术。父视图控制器创建此对象并保存对它的引用。当它显示子视图控制器时,它将对共享对象的引用传递给它,以便子对象可以在其上设置值。然后,当父母再次出现时,它可以根据该共享对象的值更新其状态。
我个人更喜欢技术#1。
其实我做了一些不同的事情。
我用子控制器中的parentController的类型声明了一个变量。
而在我推childController之前的parentController我这样做: objView.parentController = self;
然后我只是调用parentController.variableIwant = something;在儿童控制器和Voile上!
从技术上讲,这将工作,但对于最大封装和可重用性,创建委托是最好的方法 – Brian 2010-09-01 14:33:54