我有一个核心数据iPhone应用程序。
我在导航控制器上有两个视图(视图A = root,视图B =子)。
我想告诉视图A在视图B弹出导航控制器时(即当用户按下“后退”按钮时)更新它的tableView。发生这种情况时会调用什么方法?我是否需要设置某种协议或通知?
谢谢,
答案 0 :(得分:0)
我这样做的一种方法是在父级中创建一个BOOL(类似于didPushChildController),当你按下子级时,该BOOL设置为true。然后,在父视图的viewWillAppear中,您可以测试该变量是否已设置并执行您想要执行的操作。
根据控制器堆栈的复杂程度,委托也可能是合适的
答案 1 :(得分:0)
您可以实现视图控制器B的viewWillDisappear方法。
最好的方法是在视图控制器B中声明一个“viewBDelegate” - 协议,它将由视图A实现。
@protocol viewBDelegate <NSObject>
@required
-(void) viewBWillBeClosed;
@end
然后你需要一个视图控制器B中的实例变量,它持有对视图控制器A的引用(在按下视图B时设置)。
@property (nonatomic, retain) id<viewBDelegate> delegate;
在视图控制器B的viewWillDisappear方法中,您可以通过调用委托协议的方法来通知委托(视图控制器A)。
- (void)viewWillDisappear:(BOOL)animated{
[delegate viewBWillBeClosed];
[super viewWillDisappear:animated];
}