我有一堆“幻灯片”,我试图在iPad上显示,一次一个,使用UIScrollView。 “幻灯片”是UIViewController
类的各种子类。
我将幻灯片存储在NSUserDefaults
中,由NSDictionaries代表。在启动时,我加载NSDrray的NSDrray并循环遍历它们,将视图传递给UIScrollView。
现在这效率很低,因为所有幻灯片都被保存在内存中,即使它们在屏幕外也是如此。我怀疑我应该让它的行为更像UITableViewController,重新使用幻灯片并在屏幕外释放幻灯片,并在屏幕上重新创建幻灯片。
我有两个问题。
首先,UITableViewController如何处理单元格交换?我在哪里可以找到一些示例代码或算法?
其次,如果幻灯片的类型不同,我该如何重新使用幻灯片?
答案 0 :(得分:1)
我在这里写了一篇关于循环UIScrollview的答案:
How to implement a cyclic UIScrollView?
如果您使用该方法,那么您实际上只需要加载3个视图。
如果您的视图类型不同,那么您只需要在UIView子类中实现尽可能多的通用性,并在显示之前执行必要的自定义(设置图像等)。应该可以只创建其中的三个。您正在滚动的那个开始显示,当您滚动到视图中时,您正在滚动的那个被修改以显示...
A B C
三个视图 - A和C不可见,B可见。
如果向右滚动一些B,则可以看到一些C. A可以重复使用并在逻辑上移动以跟随C,所以你有
B C A
继续向右滚动,改变B并在A
之后逻辑地进行滚动C A B
如果您以相反的方式滚动,但反过来。