0

我有一个 UITableViewCell,我希望在单击它时保持选中状态。所以我有这个工作得很好的代码:

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {   

static NSString *identifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }
    cell.textLabel.text = [NSString stringWithFormat:@"%@", [[[self.dataSource objectAtIndex:indexPath.row] lastPathComponent] stringByDeletingPathExtension]];
    //cell.selectionStyle = UITableViewCellSelectionStyleNone;
    UIView *bgColorView = [[UIView alloc] init];
    [bgColorView setBackgroundColor:[UIColor brownColor]];
    [cell setSelectedBackgroundView:bgColorView];
    return cell;
}

每次我单击一个单元格时,它都会被选择为棕色并保持选中状态,直到我单击另一个单元格...完美但是当我通过单击导航控制器的后退按钮关闭视图然后切换回我的视图时我的单元格不再被选中。那么,当我返回视图时,如何实现在切换视图之前选择的单元格仍然被选中?

我想我可能必须从 tableview 创建一个属性,然后再次选择 viewDidLoad 中的行。我可以将 selectedRow 索引保存在 nsuserdefaults 中。但我希望有一个更简单的解决方案。

4

1 回答 1

0

在您的-viewDidLoad方法中,将其添加到底部:self.clearsSelectionOnViewWillAppear = NO;这将使其看起来像这样:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.clearsSelectionOnViewWillAppear = NO;
}
于 2012-10-18T19:34:43.107 回答