我试图在用户刷到最后一个viewcontroller(4/4)后显示一个按钮。但索引错误输出错误的数字(即使显示正确的视图控制器)。
func viewControllerAtIndex(index : Int) -> UIViewController? {
if((self.pageTitles.count == 0) || (index >= self.pageTitles.count)) {
return nil
}
let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageContentViewController") as! PageContentViewController
pageContentViewController.imageName = self.images[index]
pageContentViewController.titleText = self.pageTitles[index]
pageContentViewController.pageIndex = index
println(pageContentViewController.imageName)
if index == 3 { // show start button once user reaches the last screen (index = 3)
startBtn.hidden = false
} else {
startBtn.hidden = true
}
return pageContentViewController
}
所有视图都正确显示,除了索引随机从1,2,4,2跳转。如果我来回滑动它会变得更糟。
为什么索引没有显示正确的索引(与显示的视图控制器一致)?
答案 0 :(得分:0)
如果您使用viewControllerAtIndex
与Xcode为基于页面的应用程序"提供的项目模板类似,那么最终会从UIPageViewControllerDataSource
的方法之一调用,即pageViewController:viewControllerAfterViewController
或pageViewController:viewControllerBeforeViewController
。页面视图控制器调用这些方法和提供的索引的时间完全取决于其内部实现,并且可能与您导航和查看页面的顺序无关。我认为它针对内存消耗和性能进行了高度优化,因此它要求查看控制器以满足这些目标的方式。