检索tableView中的选定行

时间:2014-08-15 10:21:49

标签: ios objective-c iphone uitableview

我正在创建一个包含我从解析数据库中检索的城市名称的tableview。我使用didSelectRowAtIndexPath和cellForRowAtIndexPath委托方法实现了多个选择。当用户完成选定的城市时,我想将它们保存在解析数据库中,但当用户返回时,我希望它从头开始选择所选城市。

我该如何实现?我是否需要在我的解析数据库中保存indexPath然后将其检索,然后将其与tableView中的indexPaths或更好的解决方案进行比较?

的cellForRowAtIndexPath

- (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;
}

didSelectRowAtIndexPath方法

-(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];


}

1 个答案:

答案 0 :(得分:1)

不是在NSIndexPath中保存cellSelected,而是保存城市名称。然后,再次返回此tableview控制器后,您只需获取所选城市名称并填充cellSelected数组