iOS提供最多30个Viewcontrollers(ARC)的最佳方式

时间:2015-08-26 13:38:09

标签: ios objective-c uitableview uipageviewcontroller

我希望在 30次(最大)周围呈现相同的ViewController。该应用程序通过一系列步骤完成一系列信息。 UI仅包含显示文本信息的webview,但是有时会添加tableview以便用户基于该信息回答问题。我已经尝试了很多方法,但是这是实现这一目标的最有效的方式,因为虽然我可以使它工作正常但是我得到了很多废弃的内存这会大大减慢应用程序(我正在使用ARC)

选项1 我已经尝试过使用UIPageViewController,但是在iPhone 4上工作正常,但是它很迟钝而且很迟钝,即

[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];

选项2 我已经尝试过推动视图控制器(自身),它再次正常工作,但内存没有被释放,被放弃的内存增加到约20mb的快照。

用户不必回到上一个视图,所以尝试删除堆栈中的viewcontrollers,因为我正在进行但内存仍在增加。

我一直在努力解决这个问题好几个星期肯定有一个内存有效的解决方案吗?

在Mac被抛出窗口之前获得成功答案的一品脱:)

先谢谢

3 个答案:

答案 0 :(得分:1)

ViewControlle可能包含太多资源,如Image,ImageView,View,Label ......所有这些UI单元都会占用大量内存。所以我认为提供30个视图控制器的最佳方法有两点需要注意。

  1. 使用滚动视图显示内容,可以将视图控制器中的所有元素放入其中。
  2. 使用LAZY LOAD显示内容。结合滚动视图,您可以使用cycle scroll视图。循环滚动视图将加载最近的三个图像并将它们保存在内存中,因此无论将显示多少视图,内存都将保持在低水平。

答案 1 :(得分:1)

试试这个Reload View Controller。用于显示多个项目的代码。

答案 2 :(得分:0)

我坚持UIPageViewController。假设您正确使用dataSourcedelegate方法,在任何给定时间内应该有最多3个ViewControllers(当前显示的VC,下一个VC和前一个VC)。 iOS将负责这两者之间ViewControllers的内存管理。

如果您想要更详细的答案,您应该发布一些代码。从你的问题中不清楚你想要完成什么。