我有一个UIViewController
来管理一些数据的显示。当用户想要编辑此数据时,我将编辑UIViewController
推送到堆栈。当用户完成编辑时,顶部视图控制器从堆栈中弹出。在弹出编辑视图后,我知道需要更新显示的最优雅方式是什么?
我认为我可以将内容更新代码放入数据视图的viewDidLoad
方法中,但是当我的视图显示时,并不总是调用此方法,尤其是当我向下导航时视图堆栈。
我还考虑将我的数据视图控制器设置为UINavigationController
的委托并等待– navigationController:didShowViewController:animated:
被调用,我担心的是可能还有其他视图控制器需要时通知它们被显示出来并且会成为一个小问题,管理哪个控制器应该收到didShowViewController
消息。
答案 0 :(得分:5)
我认为viewWillAppear会做到这一点。
否则,您的编辑视图控制器可以调用指向父控制器的新委托方法。在那里,您可以更新数据模型并显示。例如:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if ([delegate respondsToSelector:@selector(editEntryByTitle:)])
[delegate performSelector:@selector(editEntryByTitle:) withObject: textField.text];
[textField resignFirstResponder];
[self dismissModalViewControllerAnimated:YES];
return YES;
}