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];

これは期待どおりに機能します。タブバーが表示され、myUIImageViewも表示されます。

UIImageView私は自分のアプリのどこでもそれを変更する必要があります(私はTabBarController、、、などNavigationControllerを持っていますUITableView

たとえば、をクリックしたときに背景色を変更したいUITableCell

私はすべてを試しました:self.window.view.subviews、、atObjectIndexどちらも現在の背景色を取得していないようです。

4

2 に答える 2

0

まず、背景色を設定するだけの場合は UIImageView は必要ありません。UIView で十分です。

問題を解決するために、AppDelegate で変更したい背景色のビューへの参照を保持できます。次に、次のように、アプリのどこからでも AppDelegate (およびビューへの参照) にアクセスできます。

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

よろしいですか?

通常は、ビュー コントローラーのビュー階層を操作する唯一のオブジェクトがそのビュー コントローラーになるようにアプリを配置するのが最善です。他のオブジェクトが何かを変更したい場合は、データ モデルを変更するか、View Controller にメッセージを送信します。したがって、View Controller に「backgroundColor」プロパティを指定すると、そのセッターが適切なビューを更新します。ビュー コントローラーを介して間接的に背景色を設定すると、後でビュー階層を簡単に変更できるようになり、一般的に物事が整理された状態に保たれます。

于 2011-03-30T22:28:31.230 に答える