无法使用parentViewController(Swift)解除viewController

时间:2016-02-18 15:54:33

标签: ios swift

我试图像这样解雇一个视图控制器:

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语句中的代码都没有执行。它似乎找不到控制器。我在这里做错了什么想法?任何帮助将非常感激!谢谢!

1 个答案:

答案 0 :(得分:4)

呈现的视图控制器没有父级,它有一个演示者。这可能令人困惑。

您可以将dismissViewControllerAnimated(_:completion:)发送给呈现的视图控制器以使其自行解除:

  

如果您在呈现的视图控制器本身上调用此方法,UIKit会要求呈现视图控制器处理解雇。

或者您可以向视图控制器询问其呈现视图控制器,并要求演示者解除所呈现的内容:

    if let vc = cropViewController.presentingViewController {
        print("has presenter")
        vc.dismissViewControllerAnimated(true, completion: nil)
    }