2015-11-20 62 views
2

我设置了我的第一个项目斯威夫特型“类”输入值。目前,我得到这个错误:无法分配“[类别]”

Cannot assign value of type 'UIViewController' to type '[UIViewController]' 

我已暗自怀疑这个有关这一切?!业务...

我以为我有?小号想通了足够的! s的工作理解上手,但是当我开始寻找到应用程序委托的初始化我弄糊涂了顺便说一句,他们正在使用! s。这是我在我的didFinishLaunchingWithOptions方法这么远:

self.window = UIWindow(frame: UIScreen.mainScreen().bounds); 
    self.navCtrlr = UINavigationController(); 
    self.rootVC = RootViewController(nibName: nil, bundle: nil); 
    self.navCtrlr!.viewControllers = self.rootVC! as UIViewController; **** 
    self.window!.rootViewController = self.rootVC; 
    self.window?.makeKeyAndVisible(); 

4号线(与****)是一个与问题。最初我使用self.rootVC as UIViewController而没有!,但我得到一个错误,要求我添加!,所以我做了。现在我收到我现在遇到的错误。这是我的类属性的样子:

var window: UIWindow?; 
var navCtrlr = UINavigationController?(); 

var rootVC: RootViewController?; 

的UINavigationController的实例混淆了我为好,说实话......我们使用?的原因是因为我们希望变量能够包含零,和在创建对象之前不必定义它,对吗?那么为什么()在最后?但我离题了。

'UIViewController''[UIViewController]'有什么区别,我能做些什么来使这个错误消失?

回答

0

尝试

self.navCtrlr!.viewControllers = [self.rootVC! as UIViewController]; 

[UIViewController]是迅速

阵再说,我觉得rootViewController是navigationController,所以

self.window = UIWindow(frame: UIScreen.mainScreen().bounds); 
    self.rootVC = RootViewController(nibName: "youNibName", bundle: nil); 
    self.navCtrlr = UINavigationController(rootViewController: self.rootVC!); 
    self.window!.rootViewController = self.navCtrlr; 
    self.window?.makeKeyAndVisible();