关闭 UITableView 静态单元格中的复选标记

Posted

技术标签:

【中文标题】关闭 UITableView 静态单元格中的复选标记【英文标题】:Turning off checkmarks in UITableView Static Cells 【发布时间】:2012-12-31 12:18:53 【问题描述】:

我有一个带有 5 个单独分组单元格的 UITableView,允许用户从每个选项访问特定的其他屏幕。然后用户将返回此屏幕,我希望能够在最后一个选定的单元格上打上复选标记并关闭任何以前的复选标记。

我试图在didSelectRowAtIndexPath: 中实现这一目标,但似乎无法做到。

动态单元格有一些可用的答案,但静态单元格没有答案,有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

有多种方法可以管理此问题,但其中一种更简单的方法是将对单元格的引用存储在集合中,以便您可以轻松地将消息发送到所有单元格。例如,您可以添加如下属性:

@property (strong, nonatomic) IBOutletCollection(NSArray) *cells;

@property (strong, nonatomic) IBOutletCollection(UITableViewCell) NSArray *cells;

并将其连接到 nib 文件或情节提要中的每个单元格。 (如果您不使用 Interface Builder,请删除 IBOutletCollection,并在您创建单元格的任何位置自行填充数组。)

然后您可以按如下方式管理选择:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    for (UITableViewCell *currCell in self.cells)
    
        currCell.accessoryType = UITableViewCellAccessoryNone;
    

    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
    selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;

【讨论】:

我想我做错了什么,但该属性的语法对我来说不起作用。当我输入 IBOutletCollection 时,它要求输入一个类名。如果我只使用 IBOutlet,语法似乎还可以。由于我对 Xcode 还很陌生,您能否解释一下我如何将属性连接到每个单元格(我正在使用情节提要)【参考方案2】:

IBOutletCollection 的正确语法是:

@property (strong, nonatomic) IBOutletCollection(UITableview) NSArray *cells;

【讨论】:

应该是@property (strong, nonatomic) IBOutletCollection(UITableViewCell) NSArray *cells;

以上是关于关闭 UITableView 静态单元格中的复选标记的主要内容,如果未能解决你的问题,请参考以下文章

如何从表格视图中的选定单元格中获取文本?

如何在加载了 JSON API 数据的 tableview 单元格中保存复选标记属性?

使附件类型成为选定单元格的复选标记

从多节 UITableView 中的自定义静态单元格中检索标签文本

TableView Cell 重用和不需要的复选标记 - 这让我很生气

点击两次以突出显示收藏视图中的复选标记