如何创建一个可重复使用的UIView,类似UITableView和UITableViewCell那样的?

2013-04-04 20:28:25 +08:00
 adow
最近我的一个App需要一下创建几十个UIView(和屏幕一样大),每个UIView 里面都放了一个 UITextView,他们除了文字不一样其他属性设置都是一样的,在运行的时候,我发现这个过程消耗的时间比较长(我从TimeProfiler 里查看到创建这么多的UITextView似乎就是比较长时间)。

后来我想到能否像 UITableView和UITableViewCell那样使用reuseIdentifier的思路来创建一个UIView对象模版,其他只是复制这个UIView然后设置他里面的文字就好了。

但是我发现对一个已有UIView对象做[view copy]是不可以的,因为UIView 没有实现copyWithZone方法,所以我现在也不知道该怎么办了,既然UITableViewCell可以reuse,我们如何来创建一个自定义的UIView来实现reusable呢?
7019 次点击
所在节点    iDev
4 条回复
clowwindy
2013-04-04 20:49:47 +08:00
你的理解大概不对,看苹果的文档:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/dequeueReusableCellWithIdentifier:

TableCell 每屏幕只显示几个,所以是可以复用的。向下滚动的时候 cell 并没有被复制,只是把当前没有显示的 cell 拿出来直接重用罢了。

建议重新考虑一下你的设计是否合理,一次创建几十个和屏幕一样大的 view 有没有必要。
alexrezit
2013-04-04 20:51:36 +08:00
你根本没有理解 "重用" 的概念!!!!!!!!!!!!!
要做 app 最起码得先学会基础好嘛. 然后吧, 差不多能有十几个人以前问过我类似问题了, 于是我曾经写了一个 demo 放在了 github 上, 有兴趣可以参考下: https://github.com/AlexRezit/SlidesDemo
懒得解释原理了. Talk's cheap, read my bloody code.
adow
2013-04-04 21:03:44 +08:00
@alexrezit
@clowwindy
你们一说我突然就领悟了,我错误理解了重用的意思,不好意思啦。
hilenlai
2013-04-04 23:36:50 +08:00
三个view。 切换的时候换里面的内容就行了,view对象保持不变
cocoachina上有个很好的例子,但是现在打不开了 ╮(╯▽╰)╭

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/64956

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX