3

나는 didSelectRowAtIndexPath (현재 tableView) 전에 viewDidLoad (다음 tableView 중)을 호출했습니다.viewDidLoad before called didSelectRowAtIndexPath

저는 '싱글 톤'을 사용하여 제 모델을 보유하고 있으며, 지금까지는 매우 잘 작동하고 있습니다. 현재 didSelectRowAtIndexPath의 테이블에서 선택된 행을 didSelectRowAtIndexPath의 변수로 설정하여 tableview (스토리 보드의 세그먼트로 연결됨) 대상에 전달하려고합니다.

그러나 행 번호를 설정하기 전에 tableviewviewDidLoad이 호출됩니다. didSelectRowAtIndexPath 나중에 호출되지만 그때까지 대상 테이블에 대한 데이터를 잘못 설정했습니다.

+0

일부 코드를 게시 할 수 있습니까? –

+0

예. 자세한 내용은이 코드를 게시하십시오. 나에게 무언가가 잘못되어있는 것처럼 보입니다. (사실 당신이 가지고 있다면) 더 자세한 내용을 알려주세요. –

답변

5

연속체를 사용하는 경우 didSelectRowAtIndexPath:이 필요하지 않습니다. IB의 셀에 segue를 연결하기 만하면됩니다.

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    CustomViewController *newVC = [segue destinationViewController]; 
    newVC.property = theDataYouWantToPass; 
} 

당신은 전달되는 sender 변수를 통해 행을 검색 할 수 있습니다 코드에서 만이 사용합니다.

UITableViewCell *cell = (UITableViewCell *) sender; 
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 
NSInteger myRow = indexPath.row; 
+0

감사합니다. Mundi, perfect. 나는 정말로 내가 장난 꾸러기를했다고 생각하기 시작했다. 왜 didSelectRowAtIndexPath를 사용해야합니까? – Ian

+0

그렇다면 레거시 방법입니다. IB에서 segue를 삭제하고 대신에'didSelectRowAtIndexPath'를 사용할 수 있습니다. segues를 사용할 때 간단히 필요하지 않습니다. 그렇지 않으면 다른 것들을 할 수 있습니다. – Mundi

+0

문제가 해결되면 체크 표시를 확인하십시오. – Mundi