2013-07-11 3 views
0

뷰 콘트롤러에 UIcollectionview를 배치했습니다 (성공적으로 작동했습니다). 다른 뷰 컨트롤러를 열고이 셀의 레이블을 선택한 셀 텍스트로 업데이트하려고합니다. 나는 코드를 다음 사용하고 있지만 (다른 VC의 라벨을 업데이트하지 않음) 작동하지 않습니다 :uicollectionview 셀 선택시 다른 viewcontroller의 uiLabel이 업데이트되지 않습니다

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
// gorseldetay is another viewcontroller including a label and an image 
NSLog(@"Row : %d , Section : %d", indexPath.row, indexPath.section); 

[self performSegueWithIdentifier:@"showDetail" sender:self]; 
gorselDetay *g = [self.storyboard instantiateViewControllerWithIdentifier:@"gorselDetay"]; 
NSLog(@"%@",g.mylabel2.text); // returns "null" 
g.mylabel2.text = @"any text to update"; 
NSLog(@"%@", g.mylabel2.text); // returns "null" 
} 

와 나는 또한 추가 prepareForSegue 작용 제가 위에서 말했듯이

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
NSLog(@"%@", segue.identifier); // returns "showDetail", OK 

if ([[segue identifier] isEqualToString:@"showDetail"]) 
{ 
    UIImage *imageim2 = [UIImage imageNamed:@"anyimage.png"]; //this file exists 

    gorselDetay *r1 = (gorselDetay *)[segue destinationViewController]; 
    [r1.mylabel2 setText:@"any text to update"]; 
    r1.gorselim.image = imageim2; 
    NSLog(@"2 - %@", r1.mylabel2.text); // returns "null" 
} 
} 

는, UICollectionView가 성공적으로 채워집니다 및 그래도 작동하지만 다른 viewcontroller (gorselDetay)의 레이블은 업데이트되지 않습니다. 그러나 gorselDetay vc가 성공적으로 열립니다.

도움 주셔서 감사합니다.

답변

2

보기가 아직로드되지 않았기 때문에 다른 컨트롤러에서 레이블 (또는 다른 UI 요소)을 업데이트 할 수 없습니다 (r1.myLabel2는 null입니다). 텍스트를 r1의 문자열 속성에 전달한 다음 r1의 viewDidLoad에서 해당 속성을 사용하여 레이블의 텍스트를 설정해야합니다.

+0

<인스턴스 변수 "any_variable_name"이 (가) 보호됩니다> 다른 VC에서 변수를 업데이트하려고하면 오류가 반환됩니다. –

+0

확인되었습니다. 고맙습니다 –

관련 문제