我是iOS编程新手,现在我遇到了问题。
有一个登录屏幕,使用[self presentViewController:loginview animated:YES completion:nil];
在MasterViewController中显示它。
现在我想在[self dismissViewControllerAnimated:YES completion:nil]
这是我的代码:
[self dismissViewControllerAnimated:YES completion:^ {
[self getPostData]; // Reload Data
[self.tableView reloadData]; // Reload Data
}];
但它不起作用。
(重载方法在MasterViewController中)
任何人都可以帮助我?
答案 0 :(得分:8)
您可以使用NSNotificationCenter
解决问题。
在MasterViewController
viewDidLoad 中定义NSNotification,如下所示
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeModal:) name:@"CloseModal" object:nil];
然后定义方法如下
-(void)closeModal:(NSNotification *)notification{
UIViewController *controller=(UIViewController *)notification.object;
[controller dismissViewControllerAnimated:YES completion:^ {
[self getPostData]; // Reload Data
[self.tableView reloadData]; // Reload Data
}];
}
最后来自您实际尝试解除控制器使用代码的其他控制器
[[NSNotificationCenter defaultCenter] postNotificationName:@"CloseModal" object:self];
答案 1 :(得分:1)
你应该做的基本上就是如下所示呈现视图控制器的调用方法
[(MasterViewController*)self.presentingViewController reloadData];
答案 2 :(得分:0)
您可以调用presentationViewController的方法来更新Presenting视图。
例如:我有一个可以从多个视图启动的模态视图。并且所有呈现视图都会在视图中重新加载代码。
在驳回模态视图之前添加以下代码。
[self.presentingViewController viewWillAppear:YES];
[self dismissViewControllerAnimated:YES completion:Nil];