presentViewController的回调方法

问题描述:

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

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

我是新的Objective-C语法,找不到应传递给'completion'参数的对象。 (也没有发现任何使用它的例子)

我想在我的View Controller关闭时有回调方法。

感谢,

米洛斯

这是一个block的地方。

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

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

+0

谢谢,把操作放在viewDidDisappear上就像一个魅力! – 2012-03-02 08:27:53

这种方法不会给你你想要的。完成块用于当视图控制器完成时呈现,而不是当它被解散时。当控制器被解雇时,您需要使用不同的模式(例如委派)来获取回调。

完成处理程序的viewDidAppear之后调用:方法是 称为所呈现的视图控制器上。

参见创建完成块的presentViewController:animated:completion:

+0

Thnaks,我尝试了某种形式的授权,但一直未能实现。你能指点我一些关于代表团的教程吗? – 2012-03-02 08:18:12

实施例:

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

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

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

谢谢你的例子! 不幸的是,它不会像其他人提到的那样给出解决方案,但至少我发现了如何编写完成块。 – 2012-03-02 08:16:33

+0

为什么这是upvoted?答案是错误的。 presentViewController中的完成处理程序在APPEARS时运行,而不是在OP请求时DISAPPEARS时运行。 – 2016-09-14 19:53:07