2010-05-05 72 views
10

觉得我要去这里有点嚼头。我有几个独立的UITextField秒,在UITAbleViewCell个几UITextFields,和一个单一的UITableViewCell将被用来保存笔记,如果有任何一个细节视图。当我处于编辑模式时,我只想让这个单元格可选。当我不在编辑模式下时,我不想选择它。选择单元格(处于编辑模式时)将激发一个将启动新视图的方法。我知道这很容易,但我在某处丢失了某些东西。正确设置willSelectRowAtIndexPath和didSelectRowAtIndexPath方法来发送小区选择

下面是我使用的是当前的选择方法:

-(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顶端文本框来获取键盘弹出。我想也许第一个响应者正在阻碍点击(这将是愚蠢的),但即使有这个评论,我不能在编辑过程中执行单元格选择。

回答

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

在Xcode 4.2/iOS5中,这些可以在Interface Builder的TableView中设置。 – 2011-11-17 01:42:39

+0

通过在故事板/界面生成器的“选择”选项中选择“Single Selection”来解决它。谢谢! – 2012-06-09 10:01:48

4

的文件指出,tableView:willSelectRowAtIndexPath:未在编辑模式时调用。另外,即使取消选择,蓝色闪光灯也会发生。从文档:

这种方法不被调用,直到用户触摸一行,然后举起他们的手指;该行直到那时才被选中,尽管它在触摸时突出显示。您可以使用UITableViewCellSelectionStyleNone来禁用触摸式单元格高亮显示。当表格的编辑属性设置为YES(即表格视图处于编辑模式)时,此方法不会被调用。

+1

感谢您的回答。让我仔细检查文档,这让我意识到自己愚蠢的错误。 – 2010-05-05 18:38:28

+0

只想通过引用文档完整地阐明此答案:“...当表视图处于编辑模式时(即表视图的编辑属性设置为YES),不调用此方法**除非表视图允许在编辑过程中进行选择(即,表视图的allowsSelectionDuringEditing属性设置为YES)。**“ – Pat 2013-07-05 21:18:07

相关问题