英语轻松读发新版了,欢迎下载、更新

请教一个UIPageViewController的问题

木鱼木鱼 发布于 2015年02月09日
无人欣赏。

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

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

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

共3条回复
木鱼木鱼 回复于 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
}
木鱼木鱼 回复于 2015年02月10日

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

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

木鱼木鱼 回复于 2015年02月10日

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

登录 或者 注册