【问题标题】:transition between UIViewController from navigation drawer导航抽屉中 UIViewController 之间的转换
【发布时间】:2016-10-09 17:04:08
【问题描述】:

我正在使用 Swift 3。我对此进行了搜索并找到了解决方案

navigationDrawerController?.TransitionFromRootViewController

但是当我使用这一行时,它说TransitionFromRootViewController 不是一个函数。

所以我尝试使用

navigationDrawerController?.transition(from: RootViewController(), to: destViewController(), duration: 0.2, options: .transitionCrossDissolve, animations: nil, completion: nil)

但它显示错误:

"从视图控制器调用transition时,子视图控制器必须有一个公共的父视图控制器"

谁能帮帮我?如果有人可以通过切换推送导航抽屉的示例,那就太好了。

【问题讨论】:

    标签: ios swift3 cosmicmind


    【解决方案1】:

    这是解决方案,我将其发布到程序目录中的NavigationDrawerController example project,材料2.1.2

    它展示了如何使用多个导航控制器进行转换,并且单独进行。

    import UIKit
    import Material
    
    class LeftViewController: UIViewController {
    private var transitionButton: FlatButton!
    
    open override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = Color.blue.base
    
        prepareTransitionButton()
    }
    
    @objc
    internal func handleTransitionButton() {
        // Transition the entire NavigationDrawer rootViewController.
        // navigationDrawerController?.transition(to: TransitionedViewController(), completion: closeNavigationDrawer)
    
        // Transition the ToolbarController rootViewController that is in the 
        // NavigationDrawer rootViewController.
        (navigationDrawerController?.rootViewController as? ToolbarController)?.transition(to: TransitionedViewController(), completion: closeNavigationDrawer)
    }
    
    internal func closeNavigationDrawer(result: Bool) {
        navigationDrawerController?.closeLeftView()
    }
    
    private func prepareTransitionButton() {
        transitionButton = FlatButton(title: "Transition VC", titleColor: Color.white)
        transitionButton.addTarget(self, action: #selector(handleTransitionButton), for: .touchUpInside)
    
        view.layout(transitionButton).horizontally().center()
    }
    }
    

    你可以在GitHub issue-546找到讨论参考

    一切顺利!

    【讨论】:

    • 感谢您的一切
    • 如果我使用工具栏控制器,那么它可以工作,但如果我使用导航控制器代替工具栏控制器,那么它就不能工作
    • 当我编辑示例项目并使用导航控制器时,应用程序崩溃并显示消息“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'父视图控制器正在使用旧版包含调用 -[UIViewController transitionFromViewController:toViewController:duration:options:animations:completion:]' "
    • 对于导航控制器,您将使用普通的push API。抱歉,这是唯一的例外。
    • toolBar的高度可以设置吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    相关资源
    最近更新 更多