1

我有一个UITableView,每个单元格都有一个UITableViewCellAccessoryCheckmark. 用户可以根据自己的喜好选中和取消选中单元格。用户可以在表格视图中检查/选择多个单元格。可以根据用户偏好取消选中和重新选中选中/选中的单元格。我在UITableViewController. 单击它时,我需要返回上一个视图,在此之前我必须在选中的单元格中收集文本(仅选中的单元格)。我怎样才能做到这一点。

当一个单元格被选中/选中时,我正计划通过保持NSMutableArray并更新它来开发一个逻辑。- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath但是,当每次未选中单元格时,我都必须从数组中删除该项目,如果再次选中该单元格,则必须再次添加它。我认为这不是正确的方法。这样做的正确方法是什么。我在 Stackoverflow 中找不到类似的问题,这很不寻常。如果有人可以发布链接,如果之前有人问过这个问题,那将会很有帮助。

4

2 回答 2

7

维护两个数组,如下所示:

@property (nonatomic, retain) NSMutableArray *features, *selectedFeature;

.m在文件中合成它们。初始化两个数组,如下所示viewDidLoad

self.features = [NSArray arrayWithMyOwnResourceLikeDownloadedFromServerOrWhatever];
self.selectedFeature = [NSMutableArray array];

然后做这样的事情didSelectRowAtIndex

NSString * stirng = [features objectAtIndex:indexPath.row];
if ([self.selectedFeature containsObject:stirng]) {
    [self.selectedFeature removeObject:stirng];
}
else{
   [self.selectedFeature addObject:stirng];
}

在你的cellForRowAtIndexPath

NSString * stirng = [features objectAtIndex:indexPath.row];
[cell.textLabel setText:stirng];
if ([self.selectedFeature containsObject:stirng]) {
   //it is selected feature
   [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
}
else{
   //it is un-selected feature
   [cell setAccessoryType:UITableViewCellAccessoryNone];
}
于 2013-04-07T07:50:57.790 回答
0

创建一个长度与可检查单元格数相同的布尔数组,并更新点击事件的值。如果表格内容是动态的,您可以使用 提供的方法NSMutabeArray来保持布尔数组与表格内容一致。返回后使用数组来获取您需要的文本。

于 2013-04-07T07:16:38.277 回答