如何在Swift

时间:2015-08-03 20:39:59

标签: ios swift uiviewcontroller

我是iOS开发和Swift的新手,并遇到了一个问题。当我的应用程序启动时,它将连接到Web服务,并下载包含“posts”信息的JSON字符串,然后,它应该将第一个帖子加载到第一个视图中。之后,用户可以向左或向右滑动以使用下一个帖子加载新视图。我想我可以使用这样的东西来做到这一点:

let nextView:ViewControllerName = ViewControllerName();
self.presentViewController(nextView, animated: true, completion: nil)

然而,这表明我已经创建并准备好了另一个UIViewController,但由于我正在动态加载数据,因此我将不得不按需创建新视图并创建无限数量的视图。

那么,我如何创建一个新的UIViewController,添加控件,添加控件(包括自定义控件),并使用Swift代码中的数据填充控件?我可以以某种方式将它与故事板集成吗?

3 个答案:

答案 0 :(得分:1)

您可以拥有一个 TabControl,其中包含一个包含要显示的视图的分页滚动视图(UIViewController)。

当用户滑动时,您只需使用适当的数据填充要显示的视图。一个常见的模式是在滚动视图中有3个视图,其中已经预加载了下一个和前一个视图。

答案 1 :(得分:1)

  1. 将您的JSON响应转换为UIViewControllersfactory模式)数组。对于每个项目,您可以创建类似- (UIViewController *)viewControllerFromObject:(MyObject) object
  2. 的内容
  3. 安装ISScrollViewPageSwift
  4. 整合

答案 2 :(得分:0)

搜索“UIPageViewController”教程。您也可以使用像“iCarousel”这样的第三方库,这样可以让它更容易一些。

https://github.com/nicklockwood/iCarousel

但是:通过网络异步动态创建新视图将会产生非常糟糕的用户体验。在iOS上,每个人都习惯了非常快速和流畅的用户体验 - 一旦用户滑动,他想立即看到下一个视图。但网络请求需要0.5秒 - 10.0秒,具体取决于您的网络连接。如果你预加载一些页面以使它们已经在内存中会更好。一旦用户查看了一些预加载的页面,您就可以预先加载更多...等等......无限期。