【问题标题】:Uncheck every cell on tableView取消选中 tableView 上的每个单元格
【发布时间】:2011-10-06 06:42:22
【问题描述】:

大家好,我有一个 UITableView,它使用 UITableViewCellAcessoryCheckmark 作为我的应用程序的清单。我想要一个可以擦除每个单元格复选标记的按钮,有谁知道我该怎么做? 谢谢 :D

【问题讨论】:

    标签: objective-c xcode4 uitableview


    【解决方案1】:

    您可以取消选中模型中的所有这些(如果您使用的是良好的 MVC)然后重新加载表。 [someTable reloadData];

    【讨论】:

    • 对,但我的问题是知道如何取消选中它们。我试过了:[cell setAccessoryType: UITableViewCellAccessoryNone];这通常只会删除最后按下的单元格!
    • 这取决于你在哪里做,你需要在 - (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 之后为每个单元格调用重新加载.
    • 好的,我试过了,但它不起作用,我尝试执行下面显示的 for 循环,但它不起作用,我把它放在我的 cellForRowAtIndexPath: 方法中
    • 忽略那个for循环,请发布你的-tableView:cellForRowAtIndexPath:方法
    【解决方案2】:

    首先,当您构建/初始化 tableView 时,在委托方法中,将单元格添加到数组中。然后你可以像这样使用 for 循环遍历数组:

    for (UITableViewCell *cell in cellsArray) {
        [cell setAccessoryType:UITableViewCellAccessoryNone];
    }
    

    【讨论】:

    • 好的,我试过了,但没有用,我不知道为什么它不起作用。但是我将此代码添加到 IBAction 方法中,它会使程序崩溃。我尝试以不同的方式混合代码,但它一直在崩溃!
    • 它不起作用,因为方法是倒退的。您不会通过抓住它的指针并移动它们来设置现代时钟;你使用正确的机制。在这种情况下(正如 Grady Player 在他的回答中提到的),您需要更新您的 model (检查所代表的东西)然后要求表重新加载以反映模型的新状态。总是。
    • 好的,我有点理解,但不是全部。我是菜鸟,所以你能用不同/更简单的方式解释一下吗?谢谢
    • 不是,不是。您只需要深入研究相应的文档即可。您没有掌握的概念是 Cocoa API 遵循的模型-视图-控制器设计模式。阅读:developer.apple.com/library/ios/#DOCUMENTATION/General/…
    • 好的,我同意上述观点:不要使用 for 循环。既然有圆轮,为什么还要发明方轮?将 [cell setAccessoryType:UITableViewCellAccessoryNone] 放在 - (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 方法中。每次重新加载表视图时都会调用该方法。只需调用 [tableView reloadData] 即可取消选中所有框。
    【解决方案3】:

    还需要吗? 如果是这样,它就像这样,非常非常简单!

    在你的

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    

    添加这个方法 -

    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
    

    在您的 IBAction 函数中添加-

    [SomeTable reloadData];
    

    这将清除所有选中的单元格。

    玩得开心!

    【讨论】:

      猜你喜欢
      • 2016-04-14
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多