如何在UIStoryboardSegue中实现UIViewControllerTransitioningDelegate?

问题描述 投票:0回答:1

这就是我现在所做的:

func presentOverlayController(controller: UIViewController) {
    
    controller.modalPresentationStyle = .Custom
    controller.transitioningDelegate = self
    
    presentViewController(controller, animated: true, completion: nil)
}

//MARK: - UIViewControllerTransitioningDelegate

public func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController, sourceViewController source: UIViewController) -> UIPresentationController? {
    return OverlayPresentationController(presentedViewController: presented, presentingViewController: presenting)
}

它的效果非常棒。首先,我使用

.instantiateViewControllerWithIdentifier:
从情节提要中获取控制器。控制器以正确的方式呈现:

enter image description here

但我需要用我的自定义segue实现相同的结果:

class OverlaySegue: UIStoryboardSegue, UIViewControllerTransitioningDelegate {

    override func perform() {
        
        destinationViewController.modalPresentationStyle = .Custom
        destinationViewController.transitioningDelegate = self
    }

    //MARK: - UIViewControllerTransitioningDelegate

    func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController, sourceViewController source: UIViewController) -> UIPresentationController? {
        return OverlayPresentationController(presentedViewController: presented, presentingViewController: presenting)
    }
}

但它不起作用。为什么?

ios swift uistoryboardsegue uipresentationcontroller
1个回答
1
投票

perform
结束时,您需要致电
presentViewController(destinationViewController, animated: true, completion: nil)

© www.soinside.com 2019 - 2024. All rights reserved.