我有一个链接到不同视图控制器的主视图。我的一个视图有一些表单字段,当它们成功更新时,它会调用UIAlertView来通知用户。当用户忽略它时,将调用alertView:clickedButtonAtIndex:,我将dismissModalViewControllerAnimated:返回到我的主视图。
我遇到的问题是,当我这样做时,它不会调用viewDidLoad方法。我有需要更新的变量,谁能告诉我正在调用的是什么?我找不到任何东西,所以我可以进行更新。
发布于 2012-01-14 11:55:13
当视图控制器变为可见时,将调用viewWillAppear和viewDidAppear。您可以检查这些函数中的数据是否已更新,并相应地更新视图。
发布于 2012-01-14 11:44:45
处理这种情况的一种简单而灵活的方法是从控制器公开一个方法来重置它。这样,在任何不可预见的情况下,您都可以调用此方法,并知道您的值正在被设置:
@interface MyController
- (void)reset;
@end
@implementation MyController
- (void)reset{
//set some defaults
}
- (void)viewDidLoad{
[self reset];
}
- (void)viewWillAppear{ //<--If you want to reset your values every time the view is about to appear
[self reset];
}
- (void)viewDidDisappear{ //<--If you want to reset your values every time the view is either dismissed, covered, or hidden
[self reset];
}
@end然后在你的alertView:clickedButtonAtIndex:中
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex==0) { //whatever your situation is
//dismissModalViewControllerAnimated:
[self.myController reset];
}
}额外的阅读:UIViewController。
https://stackoverflow.com/questions/8859939
复制相似问题