2014-02-16 41 views
0

我有兩個視圖控制器:產品視圖控制器和詳細視圖控制器。 當用戶點擊UITableView上的單元格時,它將轉換到Detail View Controller。細節視圖控制器中有一個名爲imageEq的UIImageView。我試圖在產品視圖控制器中設置圖像。這是我如何做到這一點:在單獨的類中將圖像添加到UIImageView

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"pushDetailView"]) 
    { 
     DetailViewController *dvc; 
     UIImage *pic = [UIImage imageNamed:@"HorseImage.png"]; 
     [dvc.imageEq setImage:pic]; 
     NSLog(@"Pic should be set"); 
} 
........ (non relevant code) 
} 

我連接插座,將圖像複製到項目,並確保我所有的拼寫是正確的。當我運行這個,圖像視圖保持空白,並從未加載圖像。我無法弄清楚爲什麼不這樣做,這對我來說看起來很完美。上述代碼是否有任何缺陷?

回答

1

如果您將DetailViewController指針替換爲以下代碼,它應該適合您。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"pushDetailView"]) 
    { 
     UIImage *pic = [UIImage imageNamed:@"HorseImage.png"]; 

     [[segue destinationViewController] setDetailImage:pic]; 

     NSLog(@"Pic should be set"); 
} 

希望這會有所幫助, 謝謝吉姆。

編輯

添加以下屬性在DetailViewController的頭文件

@property (strong, nonatomic) UIImage *detailImage; 

而在你DetailViewController的.m文件的viewDidLoad中,添加以下

self.imageEq.image = _detailImage; 

希望這個更新的答案幫助。

+0

真棒非常感謝。然而,當我嘗試這個時,我得到警告「不兼容的指針類型發送'uiimage'到'uiimageview'類型的參數」,我不確定如何解決這個問題。 – John

+1

這段代碼將設置一個UIImage,但我認爲imageEq是一個UIImageView。我會爲你添加一些代碼,將它放到你的DetailViewController的頭文件中,這將對它進行排序,歡呼聲 –

+0

非常感謝! – John

1

而且改變

[[segue destinationViewController] setImageEq:pic]; 

[[segue destinationViewController] setImageEq:[[UIImageView alloc] initWithImage:pic]]; 
+0

謝謝。但是,進行更改後圖像仍爲空白,我再次檢查並且插座已連接,沒有錯別字,並且圖像已導入。 – John

+0

添加'NSLog(@「%@」,[segue destinationViewController]);'檢查[segue destinationViewController]是否被正確初始化。 – Avt

+0

謝謝,NSLog回讀是「」,所以它似乎有。另外,對於'setImageEq',UIImageView被命名爲'imageEq',在這種情況下,i的大小寫是否會影響? – John

相關問題