在Touch上没有调用didSelectRowAtIndexPath

时间:2016-09-09 10:35:26

标签: ios objective-c uitableview tableview

未调用我的 didSelectRowAtIndexPath 方法。我重新加载表并重新加载,并调用 talbeView

的所有方法

这是我的所有tableview方法:

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

    NSString *s = (NSString *) [app.Glb.arrayRoomList objectAtIndex:indexPath.row];

    NSString *cellIdentifire = @"CellRoomList";
    CellRoomList *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifire];
    if(cell == nil)
    {
        cell = (CellRoomList*)[[[NSBundle mainBundle] loadNibNamed:@"CellRoomList" owner:self options:nil] objectAtIndex:0];
    }

    cell.lblRoomName.text = s;

    return cell;
}

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

    return [app.Glb.arrayRoomList count];

}

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

    NSString *userName = (NSString *) [app.Glb.arrayRoomList objectAtIndex:indexPath.row];
    NSLog(@"userName :---- %@",userName);
    ViewController *chatController = [[ViewController alloc] init];
    chatController.chatWithUser = userName;
    [self.navigationController pushViewController:chatController animated:YES];
}

我在堆栈中阅读了一些问题,但无法得到答案。

如果我长时间接触细胞而不是细胞的颜色变化,但没有调用didSelectRowAtIndexPath

为什么不叫它?

这是Snap:

enter image description here

4 个答案:

答案 0 :(得分:2)

单元格中可能还有其他视图可以拦截触摸事件。确保将设置为属性 userInteractionEnabled 以获取视图。

答案 1 :(得分:1)

我曾多次面对这个普遍问题。

请注意以下事项

  1. 确保您的手机内容没有任何类型的触摸/点按手势
  2. 确保您的视图没有应用任何触摸/点按手势
  3. 确保您没有应用任何触控/点击手势的任何视图或表格视图类别(扩展名)[这更为重要,因为我们通常不希望这样]
  4. 检查您是否有任何第三方使用触控/轻击手势
  5. 最常见的原因是视图上的手势会阻止表格触及单元格。

答案 2 :(得分:0)

正如您所说的那样,您正在获取用户名,这意味着您的方法正在调用但不会重定向到另一个屏幕,因为您以错误的方式启动了视图控制器,因此请通过以下方式进行更改,

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

   NSString *userName = (NSString *) [app.Glb.arrayRoomList objectAtIndex:indexPath.row];
   NSLog(@"userName :---- %@",userName);

   ViewController *chatController = [[ViewController alloc] initWithNibName:@"ViewControllerId" bundle:nil];

   chatController.chatWithUser = userName;
   [self.navigationController pushViewController:chatController animated:YES];
}

答案 3 :(得分:0)

enter image description here

检查选择是否设置为单选!