2012-01-16 2 views
0

왜 DetailViewController에서 viewDidLoad의 NSLogs는 각각 Label 및 (null)을 반환하지만 IBAction에서는 예상 값을 반환합니다. 선택한 행에서? viewDidLoad에서도 적절한 값을 얻으려면 어떻게해야합니까?ios 내가 선택한 viewview 행에서 viewcontroller에 데이터를 전달할 때 혼란스러워합니다.

TableViewController

- (void)tableView:(UITableView *) tableView didSelectRowAtIndexPath:(NSIndexPath *__strong)indexPath { 
    DetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"Detail"]; 
    [self.navigationController pushViewController:detail animated:YES]; 
    NSUInteger row = [indexPath row]; 
    detail.selected1.text = [array1 objectAtIndex:row]; 
    detail.selected2 = [array2 objectAtIndex:row]; } 

DetailViewController

-(void) viewDidLoad 
{ 
    NSLog(@"Log: %@", selected1.text); 
    NSLog(@"Log: %@", selected2); 

} 

- (IBAction) test:(id)sender 
{ 
NSLog(@"Log: %@", selected1.text); 
    NSLog(@"Log: %@", selected2); 
} 

답변

0

의 viewDidLoad는 뷰 컨트롤러 (i.e.instantiateViewControllerWithIdentifier :)를 로딩의 결과로서 호출된다. 따라서 레이블을 설정할 때까지는 viewDidLoad가 이미 실행되어 반환되었습니다. 대신에 viewDidAppear에 로깅 구문을 넣으십시오.

+0

굉장히 감사합니다! – user1108720

관련 문제