presentViewController的回调方法

时间:2012-03-01 15:18:38

标签: ios

我遇到了presentViewController方法及其最后一个参数的问题。

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

我是Objective-c语法的新手,无法找出应该传递给'completion'参数的对象。 (也没有找到任何使用它的例子)

我希望在我提供的View Controller解散时使用回调方法。

谢谢,

米洛斯

4 个答案:

答案 0 :(得分:16)

创建完成块的示例:

[self presentViewController:navigationController 
                   animated:YES 
                 completion:^(){
                     //put your code here
                 }];

此块不带参数。其他块可能需要参数,你可以像这个例子一样定义它们:

^(BOOL bFinished){
    //put your code here
}

答案 1 :(得分:11)

这种方法不会给你你想要的东西。完成块用于视图控制器完成呈现时,而不是在它被解除时。您需要使用不同的模式(例如委托)来在控制器被关闭时获得回调。

  

在viewDidAppear:方法之后调用完成处理程序   调用了呈现的视图控制器。

请参阅presentViewController:animated:completion:

答案 2 :(得分:6)

这是block的地方。

  

在viewDidAppear:方法之后调用完成处理程序   调用了呈现的视图控制器。

有关解雇的操作,您可以将代码置于viewWillDisappear:viewDidDisappear:方法中。

答案 3 :(得分:0)

对于所有这些年来仍在阅读本文的人,我想在UIImagePickerController内部发生错误时提醒用户。解决方案

if (error condition) {
    [self dismissViewControllerAnimated:YES completion:^(void) {
        dispatch_async(dispatch_get_main_queue(), ^{
            // Alert the user here, for instance with a UIAlertController
        });
    }];
}