ios - 无法为 '[OnboardingViewController]' 类型的值添加下标

标签 ios swift compiler-errors

我正在创建一个 ViewController 数组,XCode 告诉我尝试通过括号表示法访问它们。以下代码实例化两个 OnboardingViewController(UIViewController 的子类)。

var controllers = [OnboardingViewController]()
var controller = OnboardingViewController()
let totalOnboardingPages = 2

override func viewDidLoad() {
    super.viewDidLoad()
    populateControllersArray()
    createPageViewController()
}

func populateControllersArray(){
    for i in 0...totalOnboardingPages-1 {
        controllers.append(getPageController(i))
    }
}

func getPageController(itemIndex: Int) -> OnboardingViewController {
    var controller = OnboardingViewController()

    switch itemIndex {
    case 0:
            // Welcome
            controller = storyboard!.instantiateViewControllerWithIdentifier("OnboardingWelcomeViewController") as! OnboardingViewController
    case 1:
        // Find Facebook Friends
        controller = storyboard!.instantiateViewControllerWithIdentifier("OnboardingFacebookViewController") as! OnboardingViewController

    default: ()
    }

    controller.itemIndex = itemIndex
    return controller
}

func createPageViewController() {
    let pageController = storyboard!.instantiateViewControllerWithIdentifier("OnboardingPageViewController") as! UIPageViewController
    pageController.dataSource = self

    // BREAKS ON THIS LINE
    pageController.setViewControllers(controllers[0], direction: .Forward, animated: false, completion: nil)

    pageViewController = pageController
    addChildViewController(pageViewController!)
    view.addSubview(pageViewController!.view)
    pageViewController!.didMoveToParentViewController(self)

}

错误发生在createPageViewController()中:

pageController.setViewControllers(controllers[0], direction: .Forward, animated: false, completion: nil)

Cannot subscript a value of type '[OnboardingViewController]'

好的,但是当我在该行设置断点时,我可以pocontrollers[0]并获取我的 Controller :

<MyApp.OnboardingWelcomeViewController: 0x618000086080>

事实上,我的下一个函数是 XCode 不会提示的。

return controllers[controller.itemIndex - 1]

controllers 不是可选的,我不知道这里发生了什么。我已经清理、删除了 DerivedData 目录并重新启动了 XCode。救命!

最佳答案

解决方案是将 ViewController 数组传递到 setViewControllers() 中。我更正后的代码是:

pageController.setViewControllers([controllers[0]], direction: .Forward, animated: false, completion: nil)

感谢 Paulw11 的有用评论。

关于ios - 无法为 '[OnboardingViewController]' 类型的值添加下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34051948/

相关文章:

ios - 仅下载可见单元格的数据 - Firebase Swift

ios - 'ContentMode' 不是 'UIView' 的成员类型

ios - UITextfield 弹跳文本

scala - Play 2.0 : Optional list in query

c++ - Makefile:对 'std::...' 的 undefined reference

objective-c - 尝试将 map 注释 View 上的详细信息披露指示器连接到 segue 方法

ios - 删除 iOS 应用本地化

arrays - Filter Custom Array时间优化

ios - swift2 将文本文件的内容加载到变量中

java - 错误表达式非法开始