我有viewController1
和viewController2
这是模拟呈现的,我想在解雇第二个时使用完成处理程序,但我无法获得实现。我以为我必须编写一个函数,然后把它放在那里:
viewController.dismissViewControllerAnimated(true, completion: funcToCall())
然后我收到了这个错误:
无法将'()'类型的值转换为预期的参数类型'(() - > 空隙)?“
任何人都可以解释一下,我怎样才能正确执行完成处理程序?
答案 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
}