设置TableView setEditing时无法选择UITableViewCell

时间:2013-09-03 20:59:03

标签: iphone ios objective-c uitableview

我希望能够选择多行,如下面显示的默认邮件应用程序:

enter image description here

我有一个名为edit的按钮,调用

[self.myTableView setEditing:YES animated:YES]

enter image description here

编辑按钮成功显示了单元格左侧的圆圈,如邮件应用程序,如上所示。但是,当我实际选择其中一行时,没有任何反应。正如我所料,红色选中标记不会出现在圆圈中。为什么不出现红色复选标记?

#pragma mark - UITableViewDataSource Methods

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"];
    }

    cell.textLabel.text = @"hey";

    return cell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 3;
}

#pragma mark - UITableViewDelegate Methods

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 3;
}

#pragma mark - Private Methods

- (IBAction)editButtonTapped:(id)sender {
    if (self.myTableView.editing) {
        [self.myTableView setEditing:NO animated:YES];
    }
    else {
        [self.myTableView setEditing:YES animated:YES];
    }
}

1 个答案:

答案 0 :(得分:15)

您必须在编辑模式下明确设置要启用的选项:

[self.tableView setAllowsSelectionDuringEditing:YES];

或者

[self.tableView setAllowsMultipleSelectionDuringEditing:YES];

根据docs:默认情况下,这些属性设置为NO

  

如果此属性的值为YES,则用户可以在期间选择行   编辑。默认值为NO。如果你想限制选择   无论模式如何,都使用allowSelection。

此外,以下代码段可能会导致您的选择出现问题,因为它会在选择后立即取消选择该行。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}