另一个视图中的dismissViewControllerAnimated调用方法

时间:2014-05-07 10:50:14

标签: ios objective-c

我是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中)

任何人都可以帮助我?

3 个答案:

答案 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];