在我的应用程序中,我有一个包含12种自定义单元格的表视图。 我在故事板中设计了每个。 总的来说一切正常 - 感谢您的教程:) 我的问题是,我在每个单元格中都有单独的样式附加数据 - 因此我不希望它们被重用。 如何从故事板生成单个自定义单元格以在 -
中提供它 tableView:cellForRowAtIndexPath:indexPath?
有什么建议吗? 谢谢 星
添加了:
newCell = [tableView dequeueReusableCellWithIdentifier:cellType];
cell = newCell;
[cell styleWithElement:element andResubItem:resubItem];
我的问题是,我需要另一种方法来创建一个自定义样式的单元格,而不是上面的quurted - 我没有XIB,上面的方法是我知道创建单元格的唯一方法。 它是一个解决方案,以上述方式创建一个细胞类型然后复制细胞?有没有办法复制单元格对象?
答案 0 :(得分:0)
每次都可以生成随机单元格ID,因此不会重复使用。
然而,这对于滚动性能和内存消耗来说不是很好,所以考虑重新使用单元格(即想出一种替换它们中的数据的方法)。
编辑:
您可以随时将视图从一个视图复制到另一个视图,其中包含以下内容:
UITableViewCell* myCell = [UITableViewCell alloc] initWithStyle:YOUR_CELL_STYLE reuseIdentifier:YOUR_RANDOM_ID];
for (UIView *view in newCell.subviews) {
[view removeFromSuperview];
[myCell addSubview: view];
}
您可能还需要将myCell的框架调整为与newCell的框架相同,并且如果newCell是任何事件的操作目标(例如,单击单元格内的控件元素会触发单元格类中定义的某些操作)你也需要将它们重新分配给myCell。
EDIT2:
要移动操作,您可以执行以下操作:
NSSet* targets = [control allTargets];
for(id target in targets) {
NSArray* actions = [control actionsForTarget:target forControlEvent:UIControlEventTouchUpInside];
for(NSString* selectorName in actions) {
[newControl addTarget:target action:NSSelectorFromString(selName) forControlEvents:UIControlEventTouchUpInside];
}
}
将新单元替换为目标 - 并确保它实现了所有必需的选择器(或者您可以放置新的选择器)。上面的代码将替换UIControlEventTouchUpInside的目标 - 您可以使用您需要的目标(或使用allControlEvents枚举控件使用的目标)。