我正在创建一个 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/