繁体   English   中英

获取UITableView中选中的单元格中的值

[英]Get the values in checked cells in a UITableView

我有一个UITableView ,每个单元格都有一个UITableViewCellAccessoryCheckmark 用户可以根据自己的喜好选择和取消选中单元格。 用户可以在表视图中检查/选择多个单元格。 可以取消选中/选中的单元格,然后根据用户的喜好再次对其进行重新检查。 我在UITableViewController有一个完成按钮。 单击它,我需要返回到上一个视图,然后我必须在选中的单元格(仅选中的单元格)中具有文本集合。 我怎样才能做到这一点。

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

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

@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];
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM