Swift-过渡到SceneDelegate

时间:2020-02-28 05:57:13

标签: ios swift uiscenedelegate

在iOS 13之前,我将使用从LoginVC到TabBarController的过渡。如何为SceneDelegate完成以下操作?这个程序只有1个场景/窗口

@objc func buttonTapped() {

    let transition = CATransition()
    transition.duration = 0.4
    transition.type = CATransitionType.moveIn
    transition.subtype = CATransitionSubtype.fromTop
    transition.timingFunction = CAMediaTimingFunction(name:CAMediaTimingFunctionName.default)

    let appDelegate = UIApplication.shared.delegate as? AppDelegate
    appDelegate?.window?.rootViewController?.view.removeFromSuperview()
    appDelegate?.window?.rootViewController?.dismiss(animated: false, completion: nil)
    appDelegate?.window?.layer.add(transition, forKey: kCATransition)
    appDelegate?.window?.rootViewController = //instance of my TabBarController() and selected index
    appDelegate?.window?.isHidden = false
}

2 个答案:

答案 0 :(得分:1)

@objc func buttonTapped() {

    let transition = CATransition()
    transition.duration = 0.4
    transition.type = CATransitionType.moveIn
    transition.subtype = CATransitionSubtype.fromTop
    transition.timingFunction = CAMediaTimingFunction(name:CAMediaTimingFunctionName.default)

    if #available(iOS 13, *) {

        UIApplication.shared.windows.first?.rootViewController?.view.removeFromSuperview()
        UIApplication.shared.windows.first?.rootViewController?.dismiss(animated: false, completion: nil)
        UIApplication.shared.windows.first?.layer.add(transition, forKey: kCATransition)
        UIApplication.shared.windows.first?.rootViewController = // instance of my TabBarController() and selected index
        UIApplication.shared.windows.first?.isHidden = false

    } else {

        let appDelegate = UIApplication.shared.delegate as? AppDelegate
        appDelegate?.window?.rootViewController?.view.removeFromSuperview()
        appDelegate?.window?.rootViewController?.dismiss(animated: false, completion: nil)
        appDelegate?.window?.layer.add(transition, forKey: kCATransition)
        appDelegate?.window?.rootViewController = //instance of my TabBarController() and selected index
        appDelegate?.window?.isHidden = false
    }
}

答案 1 :(得分:0)

   @objc func buttonTapped() {

         let rootVC = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Tabbarrrrr") as! Tabbarrrrr 
         let navigationController = UINavigationController(rootViewController: rootVC)
         UIApplication.shared.windows.first?.rootViewController = navigationController
         UIApplication.shared.windows.first?.makeKeyAndVisible()

        }

您可以使用该代码。