如何强迫UITableViewCell保留其配件

时间:2016-01-22 17:30:06

标签: ios objective-c uitableview

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

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

这允许我在敲击单元时切换附件。我遇到的问题是当一个单元格出列时,该附件会重置为无。如果我在那个特定的单元格上用勾选滚动

,我怎么能强制它保持勾选标记

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作。每当用户点击复选标记以设置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;
    }
}