随处访问UIWindow下添加的UIImageView

时间:2011-03-30 22:08:04

标签: iphone uiimageview uiimage subview uiwindow

在我的app start委托中,我有以下代码:

[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(我有TabBarControllerNavigationControllerUITableView等等)

例如,我想在UITableCell点击时更改背景颜色。

我尝试了所有内容:self.window.view.subviewsatObjectIndex,似乎都没有获得当前的背景颜色。

2 个答案:

答案 0 :(得分:0)

首先,如果只是为了设置背景颜色,则不需要UIImageView。 UIView就足够了。

要解决您的问题,您可以在AppDelegate中保留对您想要更改的背景颜色的视图的引用。然后,您可以从应用中的任何位置访问AppDelegate(以及对视图的引用),如下所示:

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

答案 1 :(得分:0)

你确定要这么做吗?

通常最好安排你的应用程序,以便操纵视图控制器视图层次结构的唯一对象是视图控制器。如果其他对象想要更改某些内容,则可以更改数据模型或向视图控制器发送消息。因此,您可以为视图控制器提供“backgroundColor”属性,并且其setter将更新相应的视图。通过视图控制器间接设置背景颜色,可以更容易地在将来对视图层次结构进行更改,并且通常可以更好地组织事物。