Xcode 无法强制转换类型为';UINavigationController';(0x10836e698)至';UITABBARC控制器';(0x10836e6e8)。?
这是UITabBarController的代码,我试图在其中打开splitviewcontrollerXcode 无法强制转换类型为';UINavigationController';(0x10836e698)至';UITABBARC控制器';(0x10836e6e8)。?,xcode,swift,uiviewcontroller,uinavigationcontroller,uitabbarcontroller,Xcode,Swift,Uiviewcontroller,Uinavigationcontroller,Uitabbarcontroller,这是UITabBarController的代码,我试图在其中打开splitviewcontroller import UIKit class SecondViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) ///
import UIKit
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
///在这一行之后,我得到了一个错误
var mainCont : UITabBarController = ((UIApplication.sharedApplication().delegate) as! AppDelegate).window?.rootViewController as! UITabBarController
var navCont2 : UINavigationController? = mainCont.viewControllers?[1] as? UINavigationController
var controller = UIStoryboard(name: "Storyboard2", bundle: nil).instantiateInitialViewController() as! UISplitViewController
controller.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
navCont2?.presentViewController(controller, animated: true, completion: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
您的第一行:
var mainCont : UITabBarController = ((UIApplication.sharedApplication().delegate)
as! AppDelegate).window?.rootViewController as! UITabBarController
正在将窗口的rootViewController
作为UITabBarController
获取。错误信息非常清楚:
Could not cast value of type 'UINavigationController' (0x10836e698) to 'UITabBarController' (0x10836e6e8).
在应用程序启动时,窗口的rootViewController设置为您在故事板上定义的初始视图控制器(大灰色箭头)。我猜您的初始视图控制器设置为UINavigationController
,但在代码中,您试图将其强制转换为UITabBarController