2011-03-30 28 views
1

下添加在我的應用程序開始委託我有以下代碼:隨時隨地訪問到的UIImageView一個UIWindow

[window addSubview:[myTabBarController view]]; 

UIImageView *banner = 
    [[[UIImageView alloc] initWithFrame:CGRectMake(0,381,320,50)] autorelease]; 
banner.backgroundColor = [UIColor redColor]; 

[window addSubview:banner]; 
[window makeKeyAndVisible]; 

可正常工作。標籤欄是可見的,而且我的UIImageView是可見的。

我需要修改UIImageView無處不在我的應用程序(我有TabBarController,一個NavigationControllerUITableView等)

例如,我想改變,當我點擊在UITableCell的背景色。

我試過一切:self.window.view.subviews,atObjectIndex,都沒有得到當前的背景顏色。

回答

0

首先你不需要UIImageView,如果它只是設置背景顏色。一個UIView就足夠了。

爲了解決您的問題,您可以在AppDelegate中保留對您想要更改背景色的視圖的引用。那麼你就可以訪問你從任何地方的AppDelegate(和引用視圖)在您的應用程序,像這樣:

((YouAppDelegateName*)[UIApplication sharedApplication].delegate).yourViewReferenceProperty 
+0

謝謝,我添加了一個屬性到我的appdelegate,並修改它的代碼 – Jerry 2011-03-31 20:51:10

0

你確定要這麼做?

這通常是最好的安排你的應用程序,以便操縱視圖控制器的視圖層次結構的唯一對象是該視圖控制器。如果其他對象想要更改某些內容,則可以更改數據模型或向視圖控制器發送消息。所以,你可能會給你的視圖控制器一個'backgroundColor'屬性,它的setter會更新適當的視圖。通過視圖控制器間接設置背景顏色,可以更輕鬆地在未來對視圖層次結構進行更改,並且可以更好地組織好事情。