2012-12-16 37 views
0

我試着從賽格瑞設置UIImageView,以及由於某種原因,圖像不獲取設置.. 我的繼承人類的.h文件子類一UIViewController的UIImageView不設置圖像

@interface PhotoDisplayViewController : UIViewController 
@property (weak, nonatomic) IBOutlet UIImageView *photoView; 
-(void)setPhoto:(UIImage *)photo; 
@end 

和繼承人在setPhoto

-(void)setPhoto:(UIImage *)photo{ 
    NSLog(@"PHOTO %@", photo); 
    _photoView.image = photo; 
    NSLog(@"MYPHOTO %@", _photoView.image); 
} 

當我打電話從SEGUE準備setPhoto,我看到這個控制檯

2012-12-16 13:26:22.129 TestApp[2183:907] PHOTO <UIImage: 0x1fd7cd80> 
2012-12-16 13:26:22.130 TestApp[2183:907] MYPHOTO (null) 

這是爲什麼發生?

回答

3

它看起來像_photoView可能是nil。加載筆尖時可能不會設置。確保你已經在IB中正確連線了它。或者也許你正在調用-setPhoto:在視圖加載之前。

0

我覺得你叫setPhoto:方法如下。在這種情況下,首先調用setPhoto:,然後在PhotoDisplayViewController中調用viewDidLoad方法。這就是爲什麼photoView是零。實際上,應該在PhotoDisplayViewController中調用viewDidLoad方法,所以你應該稍微改變一下代碼。

-(void)someActionMethod{ 
      [self performSegueWithIdentifier:yourIdentifier sender:nil]; 
} 
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
      if ([[segue identifier] isEqualToString:yourIdentifier]) { 
       photoDisplayVC = [segue destinationViewController];//photoDisplayVC is a object of   PhotoDisplayViewController 
       [photoDisplayVC setPhoto:imageObject]; 
} 

變化碼:在這種情況下,第一viewDidLoad方法被調用,並且setPhoto後:方法被調用的PhotoDisplayViewController。然後你會得到形象。

-(void)someActionMethod{ 
    [self performSegueWithIdentifier:yourIdentifier sender:nil]; 
[photoDisplayVC setPhoto:imageObject]; 
    } 
    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
       if ([[segue identifier] isEqualToString:yourIdentifier]) { 
        photoDisplayVC = [segue destinationViewController];//photoDisplayVC is a object of   PhotoDisplayViewController 

    } 

我認爲這會對您有所幫助。

相關問題