OC

Knowledge OS
主帖 3 条回复

请教一个UIPageViewController的问题

木鱼木鱼 木鱼木鱼 · 2015年02月09日 · 阅读 8 · 无人欣赏。

最近在学习使用swift开发app,用到 UIPageControll 的时候遇到一个问题,一直没能解决。

我创建了两个UI相关的控制器,一个是 UIPageViewController 的,一个是基于 UIViewController 的。 当我试图在 UIPageViewController 的控制器里面调用UIViewController 控制器的view时,总是没办法显示出来,但实际上 UIViewController 这个控制器的 viewDidLoad 方法已经被调用了。在 UIPageViewController 中左右切换时,UIViewController 这个控制器的 viewDidLoad 也确实被多次调用,但始终是一个白屏,不显示任何内容。

请教一下,这是什么原因造成的?

回复

3 条
#1
木鱼木鱼
2015年02月09日

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
}
#2
木鱼木鱼
2015年02月10日

我将 let pageContentViewController = CityViewController() 替换成下面这一句,就能正常显示出来了 let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("CityViewController") as? CityViewController

这个问题解决了,但是不明白原理,请指点

#3
木鱼木鱼
2015年02月10日

CityViewController 也有自己对应的 storyboard 里面的 view ,但是为啥不能直接使用类,而必须使用上面这种方式呢?

登录 或者 注册