故事板和海关细胞我不想重复使用

时间:2011-11-21 17:15:49

标签: ios xcode storyboard reusability cells

在我的应用程序中,我有一个包含12种自定义单元格的表视图。 我在故事板中设计了每个。 总的来说一切正常 - 感谢您的教程:) 我的问题是,我在每个单元格中都有单独的样式附加数据 - 因此我不希望它们被重用。 如何从故事板生成单个自定义单元格以在 -

中提供它

tableView:cellForRowAtIndexPath:indexPath?

有什么建议吗? 谢谢 星

添加了:

    newCell = [tableView dequeueReusableCellWithIdentifier:cellType]; 
    cell = newCell;
    [cell styleWithElement:element andResubItem:resubItem];

我的问题是,我需要另一种方法来创建一个自定义样式的单元格,而不是上面的quurted - 我没有XIB,上面的方法是我知道创建单元格的唯一方法。 它是一个解决方案,以上述方式创建一个细胞类型然后复制细胞?有没有办法复制单元格对象?

1 个答案:

答案 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枚举控件使用的目标)。