感觉我在这里有点疯狂。我有一个详细视图,其中包含一些独立的UITextField
,UITextFields
中的一些UITAbleViewCell
以及一个用于记录笔记的UITableViewCell
个有什么。我只想在编辑模式下选择此单元格。当我不处于编辑模式时,我不希望能够选择它。选择单元格(在编辑模式下)将触发一个初始化视图的方法。我知道这很容易,但我遗失了某些地方。
以下是我目前使用的选择方法:
-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!self.editing) {
NSLog(@"Returning nil, not in edit mode");
return nil;
}
NSLog(@"Cell will be selected, not in edit mode");
if (indexPath.section == 0) {
NSLog(@"Comments cell will be selected");
return indexPath;
}
return nil;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!self.editing) {
NSLog(@"Not in edit mode. Should not have made it this far.");
return;
}
if (indexPath.section == 0)
[self pushCommentsView];
else
return;
}
我的问题真的是2折;
1)即使我没有处于编辑模式,并且我知道我正在返回nil
(由于NSLog
消息),我仍然可以选择该行(它闪烁蓝色)。根据我对willSelectRowAtIndexPath
方法的理解,这不应该发生。也许我对此错了?
2)当我进入编辑模式时,我根本无法选择任何内容。 willSelectRowAtIndexPath
方法永远不会触发,didSelectRowAtIndexPath
也不会触发。我在setEditing
方法中唯一要做的就是在编辑时隐藏后退按钮,并将firstResponder
分配给顶部textField以弹出键盘。我想也许第一个响应者正在阻碍点击(这将是愚蠢的),但即使有注释,我也无法在编辑过程中执行单元格选择。
答案 0 :(得分:16)
好主我是个白痴。我从未添加过这些内容:
self.tableView.allowsSelection = NO; // Keeps cells from being selectable while not editing. No more blue flash.
self.tableView.allowsSelectionDuringEditing = YES; // Allows cells to be selectable during edit mode.
抱歉垃圾问题。
答案 1 :(得分:4)
文档指出在编辑模式下不会调用tableView:willSelectRowAtIndexPath:
。此外,即使您取消选择,也会发生蓝色闪光。来自文档:
在用户触摸一行然后抬起手指之前,不会调用此方法;直到那时才会选择该行,尽管它在触摸时突出显示。您可以使用UITableViewCellSelectionStyleNone在触摸时禁用单元格高亮显示的外观。当表的编辑属性设置为YES(即表视图处于编辑模式)时,不会调用此方法。