在我的应用程序的 ViewController 中,我调用了 transitionFromViewController 但在将闭包传递给 completion: 参数时总是会出现以下错误。
Type '() -> Void' does not conform to protocol 'NilLiteralConvertible'
函数调用如下:
self.transitionFromViewController(
self.currentVC,
toViewController: newController,
duration: 0.2,
options: UIViewAnimationOptions.TransitionCrossDissolve,
nil,
completion: { finished in
fromViewController.removeFromParentViewController()
toViewController.didMoveToParentViewController(containerViewController)
toViewController.view.frame = containerViewController.view.bounds
})
根据代码补全,方法签名如下:
transitionFromViewController(fromViewController: UIViewController, toViewController: UIViewController, duration: NSTimeInterval, options: UIViewAnimationOptions, animations: () -> Void(), completion: ((Bool) -> Void)?)
最佳答案
您不能将 nil 传递给 animations
paramere () -> Void()
声明为非可选
如果需要,传递空的闭包
self.transitionFromViewController(
self.currentVC,
toViewController: newController,
duration: 0.2,
options: UIViewAnimationOptions.TransitionCrossDissolve,
animations: { () -> Void in
},
completion: { finished in
fromViewController.removeFromParentViewController()
toViewController.didMoveToParentViewController(containerViewController)
toViewController.view.frame = containerViewController.view.bounds
})
关于ios - 如何将(可选的)完成处理程序关闭传递给 Swift 中的 transitionFromViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26315222/