2016-09-09 5 views
0

didSelectRowAtIndexPath 메서드가 호출되지 않았습니다. didSelectRowAtIndexPath가 Touch에서 호출되지 않았습니다.

- (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]; 
} 

내가 스택의 몇 가지 질문을 읽을 수는 있지만 답변을 얻을 수 없습니다 나는 테이블과 테이블 다시로드도 talbeView 여기

의 tableview 내 모든 방법입니다 모든 방법이라고 다시로드합니다. 나는 긴 터치가보다 셀의 색상 변경 셀하지만이라고하지 않을 경우 didSelectRowAtIndexPath

및 호출되지는?

enter image description here

+0

viewController, tableView.delegate = self;로 테이블 뷰 델리게이트를 설정 했습니까? –

+0

네, XIB에 추가했습니다. 다른 방법이 – Kabali

+0

입니다. NSLog에서 인쇄 할 때 사용자 이름을 확인할 수 있습니까? – Vickyexpert

답변

1

저는이 일반적인 문제에 여러 번 직면했습니다.

  1. 휴대가
  2. 보기 어떤 터치를 가지고 있겠지 확인 내용에 터치/탭 제스처의 모든 유형을 해달라고해야합니다 다음과 같은 일을 돌봐주십시오/탭 제스처는
  3. 적용 터치/탭 제스처가 적용된보기 또는 표보기 카테고리 (확장자)가 없는지 확인하십시오. [일반적으로 예상하지 못하기 때문에 더 중요합니다.]
  4. 터치 할 수있는 타사가 있는지 확인하십시오./제스처를 탭합니다.

가장 일반적인 이유는 표가 셀에 닿지 않도록하는 제스처입니다.

+0

예. 그게 문제예요,보기 탭에서 키보드를 없애기위한 제스처를 추가합니다. – Kabali

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]; 
} 
+0

길게 누르십시오. – Kabali

+0

우리는 로직을 내부적으로 로직을 구현했기 때문에 클릭만으로 호출 할 것입니다. 눌려진 로그와 같은 제스처가 아닌 처음에는 가끔 걸릴 수 있지만 모든 행을 터치하면 작동합니다. – Vickyexpert

-1

내비게이션 컨트롤러를 AppDelegate.m에 추가 했습니까 ??

- (BOOL)application:(UIApplication *)application 
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 

     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

     self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" 
                bundle:nil]; 
    UINavigationController *navigation = [[UINavigationController alloc]initWithRootViewController:self.viewController]; 
     self.window.rootViewController = navigation; 
    [self.window makeKeyAndVisible]; 
return YES; 
    } 

또는

는보기 컨트롤러 편집기 -> EmbedIn-> 네비게이션 컨트롤러로 이동을 선택합니다. 이것은 스토리 보드에 탐색 컨트롤러를 추가합니다.

+0

didSelectRowAtIndexPath와 어떤 관련이 있습니까? – haresh

0

enter image description here

확인이 선택은 단일 선택 모드로 설정되어있는 경우!

+0

예 ... 선택되었습니다 ... – Kabali

2

셀에 터치 이벤트를 가로채는 다른보기가있을 수 있습니다. 보기의 경우 NOuserInteractionEnabled으로 설정하십시오.

+0

예 userInteractionEnabled가 활성화되었습니다 – Kabali

+0

작동하지 않습니다 ... ... – Kabali

+0

사용자 셀의보기 (UILabel ..)를 비활성화하고 테이블 행 선택을 확인하십시오. – Rajesh73

관련 문제