2016-01-22 69 views
0

以下是我在桌面視圖cellForRowAtIndexPath上使用的一段代碼。如何強制UITableViewCell保留其附件

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

這允許我點擊單元時切換附件。我有的問題是,當一個細胞出隊時,配件重置爲零。我如何強制它保持複選標記,如果我滾動與該特定單元格上的複選標記

+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; 
    } 
} 
+0

這個伎倆,謝謝 – highboi