iOS - 在iOS 7中获取模态控制器父控制器

时间:2014-01-01 06:14:46

标签: ios iphone ios7

我在Xcode 5中的接口构建器中添加了一个UINavigationController,并将其标识符命名为“importer”,然后在Home控制器中,我将它用作模态窗口,从这些代码 -

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"main" bundle:nil];
            UINavigationController *importer = [storyboard instantiateViewControllerWithIdentifier:@"importer"];

            [self presentViewController:importer animated:YES completion:nil];

效果很好,导入器控制器在其UITableView中显示正确的数据。 然后,当我关闭导入器控制器时,我在导入器控制器中使用此代码 -

 [self dismissViewControllerAnimated:YES completion:^{

        HomeController *p = (HomeController *)self.presentedViewController;
        NSLog(@"home controller = %@", p);
        [p onCompleteImport];

    }];

HomeController是提供导入器控制器的人,我想从完成块获取HomeController,但它给了我“null”,那么如何从导入器控制器获取HomeController?感谢。

我已经尝试过tellViewController,parentViewController,presentsViewController,甚至self.navigationController.presentingViewController,self.navigationController.presentedViewController和self.navigationController.parentViewController,都失败了。

enter image description here

2 个答案:

答案 0 :(得分:0)

这很奇怪,但我发现它有什么问题。

HomeController是MainController的子控制器,导入器控制器的presentViewController是“MainController”,不是我想象的,有点奇怪,虽然HomeController提供了导入器控制器。

另一个问题是“无法在完整的块中加载presentationViewController,因为这次,presentViewController将为nil”

答案 1 :(得分:0)

试试这个:

HomeController *p = (HomeController *)self.presentingViewController;
[self dismissViewControllerAnimated:YES completion:^{
    NSLog(@"home controller = %@", p);
    [p onCompleteImport];
}];

在使用阻止之前保留它,因为动画完成时“导入器”已被解除。