在我的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
(我有TabBarController
,NavigationController
,UITableView
等等)
例如,我想在UITableCell
点击时更改背景颜色。
我尝试了所有内容:self.window.view.subviews
,atObjectIndex
,似乎都没有获得当前的背景颜色。
答案 0 :(得分:0)
首先,如果只是为了设置背景颜色,则不需要UIImageView。 UIView就足够了。
要解决您的问题,您可以在AppDelegate中保留对您想要更改的背景颜色的视图的引用。然后,您可以从应用中的任何位置访问AppDelegate(以及对视图的引用),如下所示:
((YouAppDelegateName*)[UIApplication sharedApplication].delegate).yourViewReferenceProperty
答案 1 :(得分:0)
你确定要这么做吗?
通常最好安排你的应用程序,以便操纵视图控制器视图层次结构的唯一对象是视图控制器。如果其他对象想要更改某些内容,则可以更改数据模型或向视图控制器发送消息。因此,您可以为视图控制器提供“backgroundColor”属性,并且其setter将更新相应的视图。通过视图控制器间接设置背景颜色,可以更容易地在将来对视图层次结构进行更改,并且通常可以更好地组织事物。