1

在我的应用启动委托中,我有以下代码:

[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, a NavigationController,UITableView等)

例如,我想在单击 a 时更改背景颜色UITableCell

我尝试了一切:self.window.view.subviews, atObjectIndex,似乎都没有获得当前的背景颜色。

4

2 回答 2

0

你确定要这样做吗?

通常最好安排您的应用程序,以便操作视图控制器的视图层次结构的唯一对象是该视图控制器。如果其他对象想要更改某些内容,它们要么更改数据模型,要么向视图控制器发送消息。所以,你可以给你的视图控制器一个“背景颜色”属性,它的设置器会更新适当的视图。通过视图控制器间接设置背景颜色可以更容易地在将来更改视图层次结构,并且通常可以更好地组织事情。

于 2011-03-30T22:28:31.230 回答
0

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

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

((YouAppDelegateName*)[UIApplication sharedApplication].delegate).yourViewReferenceProperty
于 2011-03-30T22:24:16.473 回答