我试图解散一个ViewController在一个IBAction调用遣散ViewController
@IBAction func cancel(sender: AnyObject) {
self.dismissViewControllerAnimated(false, completion: nil)
println("cancel")
}
@IBAction func done(sender: AnyObject) {
self.dismissViewControllerAnimated(false, completion: nil)
println("done")
}
我可以在控制台输出中看到println消息,但ViewController从未被解散。有什么问题吗?
根据我的经验,我添加了一个方法来解散我作为UIViewController的扩展:
extension UIViewController {
func dismissMe(animated: Bool, completion: (()->())?) {
var count = 0
if let c = self.navigationController?.viewControllers.count {
count = c
}
if count > 1 {
self.navigationController?.popViewController(animated: animated)
if let handler = completion {
handler()
}
} else {
dismiss(animated: animated, completion: completion)
}
}
}
然后我调用这个方法来解散任何UIViewController子类中的视图控制器。例如,在取消动作中:
class MyViewController: UIViewController {
...
@IBAction func cancel(sender: AnyObject) {
dismissMe(animated: true, completion: nil)
}
...
}