如何正确解除带完成处理程序的模态viewcontroller

时间:2016-07-26 16:47:10

标签: ios swift uiviewcontroller

我有viewController1viewController2这是模拟呈现的,我想在解雇第二个时使用完成处理程序,但我无法获得实现。我以为我必须编写一个函数,然后把它放在那里:

viewController.dismissViewControllerAnimated(true, completion: funcToCall())

然后我收到了这个错误:

  

无法将'()'类型的值转换为预期的参数类型'(() - >   空隙)?“

任何人都可以解释一下,我怎样才能正确执行完成处理程序?

2 个答案:

答案 0 :(得分:10)

非常简单,将funcToCall()作为completion参数传递(重要提示 - 我在这里使用花括号):

viewController.dismissViewControllerAnimated(true, completion: { 
    funcToCall()
})

completion参数文档:

  

解除视图控制器后执行的块。该块没有返回值,不带参数。您可以为此参数指定nil。

答案 1 :(得分:3)

只需删除括号并将函数名称作为参数传递,如下所示:

viewController.dismissViewControllerAnimated(true, completion: funcToCall)

只要您的函数funcToCall属于type ()->Void

,此功能就有效
func funcToCall() {  
    // do something
}