最近在学习使用swift开发app,用到 UIPageControll 的时候遇到一个问题,一直没能解决。
我创建了两个UI相关的控制器,一个是 UIPageViewController 的,一个是基于 UIViewController 的。 当我试图在 UIPageViewController 的控制器里面调用UIViewController 控制器的view时,总是没办法显示出来,但实际上 UIViewController 这个控制器的 viewDidLoad 方法已经被调用了。在 UIPageViewController 中左右切换时,UIViewController 这个控制器的 viewDidLoad 也确实被多次调用,但始终是一个白屏,不显示任何内容。
请教一下,这是什么原因造成的?
UIPageViewController 里面使用了如下代码来加载另外一个控制器里面的内容
pageViewController = UIPageViewController(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil) pageViewController!.dataSource = self
let startingViewController = viewControllerAtIndex(0)! let viewControllers: NSArray = [startingViewController] pageViewController!.setViewControllers(viewControllers, direction: .Forward, animated: false, completion: nil) pageViewController!.view.frame = CGRectMake(0, 0, view.frame.size.width, view.frame.size.height);
addChildViewController(pageViewController!) view.addSubview(pageViewController!.view) pageViewController!.didMoveToParentViewController(self)
其中 viewControllerAtIndex 方法仅仅是返回了一个控制器
func viewControllerAtIndex(index: Int) -> CityViewController? { if self.cityList.count == 0 || index >= self.cityList.count { return nil }
let pageContentViewController = CityViewController()
pageContentViewController.pageIndex = index
currentIndex = index
return pageContentViewController
}
我将 let pageContentViewController = CityViewController() 替换成下面这一句,就能正常显示出来了 let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("CityViewController") as? CityViewController
这个问题解决了,但是不明白原理,请指点