代码之家  ›  专栏  ›  技术社区  ›  gabaum10

iphone didselectrowatindexpath未启动

  •  1
  • gabaum10  · 技术社区  · 14 年前

    因此,我尝试默认在第一次加载视图时选择TableView中的第一行。我正在执行此操作,我的视图将显示方法:

    NSIndexPath *tempPath= [NSIndexPath indexPathForRow:0 inSection:0];
    
    [theTable.delegate tableView:theTable didSelectRowAtIndexPath:tempPath];
    

    这将激发该方法,但单元格不保持选中状态。这将激发正确的方法并执行其中的代码,我从未取消选择它。当用户按下另一个单元格后,它将保持选中状态。这不是第一次。有人知道是什么导致了这种奇怪吗?我甚至尝试过这样做:

    [[theTable.delegate tableView:theTable cellForRowAtIndexPath:tempPath] setSelected:YES];
    

    思想?

    2 回复  |  直到 14 年前
        1
  •  3
  •   user467105    14 年前

    首先,您不应该这样直接调用委托方法。

    如果确实需要以编程方式选择单元格(如邮件应用程序),请使用selectrowatindexpath方法:

    [theTable selectRowAtIndexPath:tempPath animated:YES scrollPosition:UITableViewScrollPositionBottom];
    
        2
  •  1
  •   Ben Scheirman    14 年前

    根据hig,不应该让表视图单元格处于选中状态。我们鼓励您(强烈)在执行tap所需的任何操作后立即取消选择行。

    对于持久性选择,应该使用附件,并且可以将单元格附件设置为选中标记以指示“已选择”。