0

나는 UITableviewController이고 행이 선택되면 다시 rootViewController으로 이동하여 테이블 뷰에 행의 텍스트를 표시하려고합니다. 무슨 일이 벌어지고 popToRootViewController 함수가 호출되기 전에 내 일반 뷰 컨트롤러의 viewWillAppear이 호출되고 있으므로 일반 뷰 컨트롤러로 이동하면 텍스트가 표시되지 않습니다. viewDidAppear도 사용해 보았는데 작동하지 않습니다. 여기에 내가 시도하는 코드입니다 :popToRootViewController는 viewWillAppear 전에 호출됩니다.

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"row was selected"); 
    user[@"school"] = [[_objects objectAtIndex:indexPath.row] objectForKey:@"title"]; 
    [[PFUser currentUser] saveInBackground]; 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

그리고 일반 뷰 컨트롤러 :

내가 콘솔에 표시되는 내용
- (void)viewWillAppear:(BOOL)animated 
{ 
    NSLog(@"will appear ran"); 
    PFUser *currentUser = [PFUser currentUser]; 
    self.userSchoolLabel.text = currentUser[@"school"]; 
} 

있다가 밖으로 다음

"will appear ran" 

및 인쇄 "행을 선택했습니다"

어떻게 내가 0 메서드를 호출하면이 문제를 해결할 수 있습니다다른보기 컨트롤러의 단추를 누르면 정상적으로 작동합니다. 문제는 행을 선택하는 것입니다. 그 이유는 무엇입니까?

미리 도움을 주셔서 감사합니다. 정말 감사.

+0

그것이 stroyboard 기반 응용 프로그램입니다 참조 세부 사항에 대한 ... 방법 : 당신이있는 tableview에서 사용 가능 편집을 설정하는 경우에도

, 그것은 didSelectRowAtIndex를 호출 할 수 있습니다? – n00bProgrammer

+0

요구 사항 : 행 -> popToRootView (RegularViewController)를 선택하십시오. 하지만, RegularViewController의 viewWillAppear가 먼저 발생하고 didSelectRow가 발생합니까? 권리? – nmh

+0

내가 게시 한 코드에는 아무 것도 없다고 생각합니다. 어쩌면 뭔가 - (UITableViewCell *) tableView : (UITableView *) tableView cellForRowAtIndexPath : (NSIndexPath *) indexPath 메서드? – dietbacon

답변

0

이벤트 처리는 대리자 메서드의 일부입니다. 귀하의 데이터 소스가 행을 보여주기 때문에 정확하다고 보입니다. 그래서, 제대로 테이블 뷰의 대리인을 제대로 설정하지 않은 것일 수 있습니다. nib을 사용하는 경우 테이블 뷰의 델리게이트를 연결하거나 코드를 사용하여 테이블 뷰를 그리는 경우 _yourtable.delegate = self; 설정되어 있지 않습니다.

또 다른 이유는 tableview 셀에 uiview가 있으면 rowselection 이벤트가 사라질 수 있기 때문일 수 있습니다. here

+0

펜촉을 사용하지 않고 대리자가 tableView에 연결되어 있고 텍스트 만 tableview 셀에 하위 뷰가없고 편집 할 수 없습니다. –