0

示例项目: http ://cl.ly/1C0N0E0f3n2P

我正在尝试在 iOS 8 中创建到视图控制器的自定义转换。我正在使用一个UIPresentationController以及一个NSObject实现的子类UIViewControllerAnimatedTransitioning,基本上遵循本教程

当视图控制器出现时,我也想隐藏状态栏,但我不知道在这个范例中我要在哪里执行此操作。

每当我尝试调用子类presentingViewController中的方法UIPresentationController或使用子类中的键时NSObject,我总是会崩溃,让我相信我不应该在这些上调用方法?

示例中的示例:

class CustomPresentationController: UIPresentationController {
    override func presentationTransitionWillBegin() {
        // Following line causes crash
        (presentingViewController as ViewController).testFunction()        

        let darkOverlayView = UIView(frame: presentingViewController.view.bounds)
        darkOverlayView.backgroundColor = UIColor(white: 0.0, alpha: 0.5)

        containerView.addSubview(darkOverlayView)
    }
}

那么我到底在哪里隐藏状态栏呢?我不想在调用的同时调用它presentViewController,因为每次出现时我都想隐藏状态栏,因此为了 DRY 原则,它应该包含在动画本身中。

4

1 回答 1

1

以下代码将修复崩溃。

let controller = presentingViewController as UINavigationController
let ctl = controller.topViewController as ViewController
ctl.testFunction()
于 2014-11-24T03:21:49.083 回答