无法指定“类”类型的值来键入“[类]”

时间:2015-11-20 03:23:29

标签: ios swift uiviewcontroller uinavigationcontroller

我正在设置我的第一个Swift项目,我目前收到此错误:

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

我怀疑这与所有? !业务有关......

我以为我已经找到了?,并且对! s的了解已经足够了,但当我开始研究app委托初始化时,我对他们的方式感到困惑'使用!。这是我在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实例化也让我感到困惑,说实话......我们使用?的原因是因为我们希望变量能够包含nil,并且在创建之前不必定义它对象吧?那么为什么最后()呢?但我离题了。

'UIViewController''[UIViewController]'之间有什么区别,我该怎么办才能让这个错误消失?

1 个答案:

答案 0 :(得分:0)

尝试

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

[UIViewController]是swift中的数组

此外,我认为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();