我试图像这样解雇一个视图控制器:
func cropViewController(cropViewController: TOCropViewController!, didFinishCancelled cancelled: Bool) {
if let vc = cropViewController.parentViewController {
print("has controller")
vc.dismissViewControllerAnimated(true, completion: nil)
}
}
TOCropViewController是UIViewController的子类。有时我会从self
,有时从picker
(UIImagePicker控制器)呈现它。我试图通过访问父节点来解雇它,但if语句中的代码都没有执行。它似乎找不到控制器。我在这里做错了什么想法?任何帮助将非常感激!谢谢!
答案 0 :(得分:4)
呈现的视图控制器没有父级,它有一个演示者。这可能令人困惑。
您可以将dismissViewControllerAnimated(_:completion:)
发送给呈现的视图控制器以使其自行解除:
如果您在呈现的视图控制器本身上调用此方法,UIKit会要求呈现视图控制器处理解雇。
或者您可以向视图控制器询问其呈现视图控制器,并要求演示者解除所呈现的内容:
if let vc = cropViewController.presentingViewController {
print("has presenter")
vc.dismissViewControllerAnimated(true, completion: nil)
}