当我点击表格视图中的第一个单元格时,没有触发 didSelectRowAtIndexPath

Posted

技术标签:

【中文标题】当我点击表格视图中的第一个单元格时,没有触发 didSelectRowAtIndexPath【英文标题】:When I tap the first cell in my tableview didSelectRowAtIndexPath is not triggered 【发布时间】:2009-09-28 13:55:47 【问题描述】:

当我点击表格视图中的第一个单元格时,didSelectRowAtIndexPath 没有被触发...有没有人看起来和/或知道为什么会发生这种情况?我表中的所有其他单元格都可以正常工作,我在didSelectRowAtIndexPath 的代码中放置了一个断点,如果点击第一个单元格,应用程序不会进入该代码,但如果点击任何其他单元格,它将进入代码。 这是一些代码:

    - (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath

    NSInteger row = 0;
    return row;


- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath

    NSInteger row = [indexPath row];
    if (row == 0)
        return nil;

    return indexPath;


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    //NSUInteger row = [indexPath row];
    //NSString *rowValue = [poolListData objectAtIndex:row];

    int newRow = [indexPath row];
    int oldRow = [lastIndexPathForPoolList row];

    if (newRow != oldRow)
    
        UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];
        newCell.accessoryType = UITableViewCellAccessoryCheckmark;

        UITableViewCell *oldCell = [tableView cellForRowAtIndexPath: lastIndexPathForPoolList]; 
        oldCell.accessoryType = UITableViewCellAccessoryNone;

        lastIndexPathForPoolList = indexPath;   
    

    [tableView deselectRowAtIndexPath:indexPath animated:YES];


- (NSInteger)tableViewForDelete:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    return [poolListData count];


- (UITableViewCell *)tableViewtableViewForDelete:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


    static NSString *DeleteMeCellIdentifier = @"DeleteMeCellIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:DeleteMeCellIdentifier];
    if (cell == nil)
    
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:DeleteMeCellIdentifier] autorelease];
    

    NSInteger row = [indexPath row];
    cell.text = [self.poolListData objectAtIndex:row];
    return cell;


#pragma mark -
#pragma mark Table View Delegate Methods

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

    return 50;


- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
   
    NSUInteger row = [indexPath row];
    [self.poolListData removeObjectAtIndex:row];
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

感谢您的宝贵时间以及您能给我的任何帮助!

【问题讨论】:

对不起,一团糟...我似乎无法正确粘贴代码。 为你更正了。 lastindexpathforpoollist 初始化程序在哪里? 你设置了 tableview.delegate 吗? 我有 lastIndexPathForPoolList 在委托 NSIndexPath *lastIndexPathForPoolList; @property (nonatomic, 保留) NSIndexPath *lastIndexPathForPoolList;但我没有初始化它(哎呀) 哪里是初始化 lastIndexPathForPoolList 的最佳位置? 【参考方案1】:

我认为您在第一行的 willSelectRowForIndexPath 中返回 nil。这将阻止该行被选中。

【讨论】:

到达那里!!!我把它拿出来了,现在我可以选择第一行,但只有在我先选择任何其他行之后!谢谢!!

以上是关于当我点击表格视图中的第一个单元格时,没有触发 didSelectRowAtIndexPath的主要内容,如果未能解决你的问题,请参考以下文章

如何防止指定任务触发

在表格视图中点击单元格不会做任何事情

如何编写 UI 测试来测试单击 UITableView 中的第一个单元格时图像是不是存在?

点击 tableview 单元格时如何更改 UIImage 颜色?

如何访问表格视图单元格

在 iOS 9.0 中开始获取 EXC_BAD_ACCESS(点击表格视图中的单元格时)