我如何强制 UITableViewCell 保留其附件

Posted

技术标签:

【中文标题】我如何强制 UITableViewCell 保留其附件【英文标题】:how to i force UITableViewCell to keep its accessory 【发布时间】:2016-01-22 17:30:06 【问题描述】:

这是我在 tableview cellForRowAtIndexPath 上使用的一段代码。

if ([[listOfQueOverview valueForKey:@"EXPENSEDETAILID"] containsObject:(_isDrilldown) ? cust.DETAILACCT : listOfOverview[0] ACCOUNTNUMBER) 
    [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
 else 
    [cell setAccessoryType:UITableViewCellAccessoryNone];

这允许我在点击单元格时切换附件。我遇到的问题是在使单元出队时,附件重置为无。如果我在该特定单元格上使用复选标记滚动,我如何强制它保留复选标记

【问题讨论】:

你可以创建一个数据结构来记住应该有复选标记的索引路径。出队时,不能保证您正在重用具有特定附件类型的单元格,因此您只需要有一个结构来记住哪些索引路径应该有复选标记。 【参考方案1】:

您可以执行以下操作。每当用户点击复选标记来设置 UITableViewCellAccessoryCheckmark 时,将该行添加到 checkedIndices 数组中,如下所示:[checkedIndices addObject:@(indexPath.row)];

在你的课堂上:

@property (nonatomic, strong) NSMutableArray *checkedIndices;

// ....

self.checkedIndices = [@[]mutableCopy];

// ....

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

    static NSString *cellIdentifier = @"CellIdentifier";

    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        UIActivityIndicatorView *activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
        cell.accessoryType = UITableViewCellAccessoryNone;
    

    if ([checkedIndices containsObject:@(indexPath.row)]) 
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    

【讨论】:

以上是关于我如何强制 UITableViewCell 保留其附件的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 MS Access 保留其 SQL 格式?

如何强制释放 UITableViewCell

如何调整 UIImageView 的大小并强制重新布局父 UITableViewCell

如何在 UITableViewCell 上保留子视图

如何强制 Python 将整数保留在科学记数法之外

UITableViewCell 如何动态适应保留宽高比的新图像?