我希望能够选择多行,如下面显示的默认邮件应用程序:
我有一个名为edit的按钮,调用
[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];
}
}
答案 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];
}