6

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

在此处输入图像描述

我有一个名为编辑的按钮,它调用

[self.myTableView setEditing:YES animated:YES]

在此处输入图像描述

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

#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];
    }
}
4

1 回答 1

16

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

[self.tableView setAllowsSelectionDuringEditing:YES];

或者

[self.tableView setAllowsMultipleSelectionDuringEditing:YES];

根据文档:这些属性NO默认设置为。

如果此属性的值为 YES ,则用户可以在编辑期间选择行。默认值为 NO。如果您想限制单元格的选择而不管模式如何,请使用allowsSelection。

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

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}
于 2013-09-03T21:05:05.993 回答