2011-03-24 54 views
0

我想設置鑄造控制器上的字段和按鈕圖像。我可以成功更改標題字段和詳細信息文本字段,但該按鈕根本不會改變。如何更改鑄造控制器上的UIButon圖像

- (void)prepareController:(MLSViewController *)controller forRow:(NSUInteger)row { 
    AdvancedTableItem *item = [self.tableItems objectAtIndex:row]; 
    EditLocationViewController *castedController = (EditLocationViewController *)controller; 
    castedController.titleText = item.text; 
    castedController.detailsText = item.details; 
    castedController.isDefaultLocation = (defaultItem == item); 
    [castedController.iconButton setImage:[UIImage imageNamed:item.icon] forState:UIControlStateNormal ]; 
} 

我做了測試,看看item.icon是呼籲鑄造控制器的按鈕setImage之前正確填充,這是正確的。

簡而言之,此代碼適用於titleText和detailsText更改,但不適用於按鈕圖像。

任何線索?

回答

1

有幾件事情可能是錯誤的。我會做到以下幾點:

  1. 創建映像事先並確保它被裝載
  2. 確保iconButton(我假設是一個IBOutlet)鏈接
  3. 確保調用此方法之後顯示視圖,否則IBOutlets沒有設置,但我認爲是這種情況,否則標題不會出現)。

這是我會在你的方法去做:

- (void)prepareController:(MLSViewController *)controller forRow:(NSUInteger)row { 
    AdvancedTableItem *item = [self.tableItems objectAtIndex:row]; 
    NSLog(@"Item from table: %@", item); 
    EditLocationViewController *castedController = (EditLocationViewController *)controller; 
    NSLog(@"Controller: %@", castedController); 
    castedController.titleText = item.text; 
    castedController.detailsText = item.details; 
    castedController.isDefaultLocation = (defaultItem == item); 
    NSLog(@"Icon Name: %@", item.icon); 
    UIImage *icon = [UIImage imageNamed:item.icon]; 
    NSLog(@"Icon Image: %@, icon button on controller: %@", castedController.iconButton); 
    [castedController.iconButton setImage:icon forState:UIControlStateNormal ]; 
} 

確保所有值不是NIL(特別是圖標和iconButton)。

在處理iPhone/iOS中的問題時NSLog是你的朋友,嵌套的調用是你的敵人。僅僅因爲一個變量是NIL並不意味着一個應用程序會抱怨它。它可能會忽略它。

相關問題