【问题标题】:Give each cell an unique tag (incremental number)给每个单元格一个唯一的标签(递增数字)
【发布时间】:2011-05-09 21:19:14
【问题描述】:

有没有办法给分组表视图中的每个单元格一个递增的数字作为其标签?

例如:

第一组

  • 单元格 1(标签 = 1)
  • 单元格 2(标签 = 2)
  • 单元格 3(标签 = 3)

第 2 组

  • 单元格 1(标签 = 4)
  • 单元格 2(标签 = 5)

第 3 组

  • 单元格 1(标签 = 6)

等等……

非常感谢任何帮助!

【问题讨论】:

    标签: iphone objective-c cocoa-touch uitableview


    【解决方案1】:

    如果不查询数据源以获取先前组中的单元格计数,这是不可能的。你可能不想这样做。无论如何都没有意义,因为您必须实施适当的重用才能获得良好的性能,因此标签随时出现和消失。

    所以真正的问题是,你为什么要这样做?可能有一种方法可以在不添加标签的情况下实现相同的效果。

    但如果你真的想:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
        NSInteger count = 1;
        for (NSInteger i = 0; i < indexPath.section; i++) {
            count += [[tableView dataSource] tableView:tableView numberOfRowsInSection:i];
        }
        count += indexPath.row;
        // dequeue, create and configure...
        cell.tag = count;
        return cell;
    }
    

    【讨论】:

    • 嗯,基本上我已经设置了我的应用程序,我需要知道第 4、第 5、第 6 等单元格是否被按下。我使用了一个非分组的tableview,它允许我使用indexpath.row,但现在我必须切换到一个分组样式的tableview,这会弄乱这个系统。
    • 所以也许你应该尝试重新排列你的数据源。 NSArray(用于部分)中的 NSArray(用于行)或类似的东西。但也许答案中的代码已经满足您的需求。
    • 虽然这是解决我问题的错误方法;你的回答是正确的。所以我会接受。正确的做法确实是重新排列数据源
    【解决方案2】:
    1. 创建变量
    2. 创建一个循环遍历所有单元格
    3. 在每个循环结束时将变量加 1

    【讨论】:

    • 如果您提前创建所有单元格,这可能会奏效,但通常的做法是回收单元格,这样您只需要填满屏幕所需的尽可能多的单元格。
    • 我明白了...抱歉,如果这没有帮助
    猜你喜欢
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多