ios – 复制UITableViewCell

我正在读取tableView中的自定义表格单元格:cellForRowAtIndexPath:来自nib文件.这对我的目的很有用,除非它很慢.

现在,我知道从长远来看,正确的做法是完全用代码创建单元格,并使用单个视图,等等.但这是一个原型,我不想付出太多努力.

现在,如果我在UIViewController子类中只读取一次nib,那么我会很高兴,然后tableView:cellForRowAtIndexPath:制作它的副本.我的假设是复制比读取笔尖更快.

这是我用来加载nib的东西,我从viewDidLoad调用:(并保留之后)

-(id)loadFromNamed:(Nsstring*)name {
    NSArray *objectsInNib = [[NSBundle mainBundle] loadNibNamed:name
                                                          owner:self
                                                        options:nil];
    assert( objectsInNib.count == 1 );
    return [objectsInNib objectAtIndex:0];
}

到目前为止一切都很好.但问题是:我如何反复复制?它甚至可能吗?

我尝试了[_cachedobject copy]和[_cachedobject mutablecopy],但是UITableViewCell不支持任何复制协议.

如果必须的话,我可以告诉他们忽略速度,直到我准备完全取下笔尖,但如果这里有一个低悬的水果,我宁愿让它快一点.

有任何想法吗?

解决方法

使用表视图中内置的单元格克隆. Apple知道生成很多表格单元格很慢.查看此方法的文档:
- (UITableViewCell *)dequeueReusableCellWithIdentifier:(Nsstring *)identifier

您创建一次单元格,然后在请求新单元格时,使用该方法克隆现有单元格.然后,您只需更改有关新单元格的更改内容并返回单元格对象.

另请查看Apple提供的表格视图实际示例代码,该代码使用此方法并以正确的方式显示.你的细胞从笔尖装入的事实根本不重要.

轻微澄清:我不认为上面的方法为您克隆细胞.相反,它需要滚动屏幕的单元格对象,只需将它们移动到新的位置即可.所以它真的重复使用一个细胞.因此,请确保您的自定义表视图可以设置为初始化之外所需的所有新值.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...