我正在创建一个包含我从解析数据库中检索的城市名称的tableview。我使用didSelectRowAtIndexPath和cellForRowAtIndexPath委托方法实现了多个选择。当用户完成选定的城市时,我想将它们保存在解析数据库中,但当用户返回时,我希望它从头开始选择所选城市。
我该如何实现?我是否需要在我的解析数据库中保存indexPath然后将其检索,然后将其与tableView中的indexPaths或更好的解决方案进行比较?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UserCell *cell = (UserCell *) [tableView dequeueReusableCellWithIdentifier:kCellIdentifier forIndexPath:indexPath];;
if (tableView == self.searchDisplayController.searchResultsTableView) {
cell.textLabel.text = [[self.filteredCandyArray objectAtIndex:indexPath.row] objectForKey:@"name"];
} else {
cell.textLabel.text = [[cityArray objectAtIndex:indexPath.row] objectForKey:@"name"];
}
if ([cellSelected containsObject:indexPath])
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
//if you want only one cell to be selected use a local NSIndexPath property instead of array. and use the code below
//self.selectedIndexPath = indexPath;
//the below code will allow multiple selection
if ([cellSelected containsObject:indexPath])
{
[cellSelected removeObject:indexPath];
}
else
{
[cellSelected addObject:indexPath];
}
[tableView reloadData];
}
答案 0 :(得分:1)
不是在NSIndexPath
中保存cellSelected
,而是保存城市名称。然后,再次返回此tableview控制器后,您只需获取所选城市名称并填充cellSelected
数组