UINavigationController 内にロードされる多数の UITableView の背景を設定しようとしています。iOS 5 で追加された外観プロキシを使用していますが、期待どおりに動作しません。
アプリは UISplitViewController を使用し、マスター ビューは UINavigationController です。この中に、PBMasterTableViewController という UITableViewController サブクラスがあります。私の AppDelegate には、次のものがあります。
UIImageView *bgView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"menuBg.png"]] autorelease];
[[UITableView appearanceWhenContainedIn:[PBMasterTableViewController_Ipad class], nil] setBackgroundView:bgView];
これは正常に機能しており、分割ビューのメイン メニューには必要な背景があります。
このメイン メニューから、関連する行を選択すると、ナビゲーション コントローラーにプッシュされる他の 3 つの UITableViewController サブクラスが表示されます。ただし、外観プロキシを使用してこれらのテーブルの背景を変更することはできません。私は次のことを試みています:
UIImageView *bgView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"menuBg.png"]] autorelease];
[[UITableView appearanceWhenContainedIn:[PBTwitterTableViewController class], nil] setBackgroundView:bgView];
これは、前に示したコードのすぐ下の appDelegate にもありますが (ただし、画像ビューの作成を繰り返さなくても) 動作しますが、これは単に何もしません! PBTwitterTableViewController のインスタンスを nav コントローラーにプッシュすると、背景が変更されていない標準のテーブル ビューが表示されます。
tableViewControllers 自体の背景ビューを単純に変更できることはわかっていますが、ポートレートに回転したときにメニューが splitViewControllers ポップオーバーに表示されるときにこれらの背景が存在することを望まないため、appearanceWhenContainedIn を使用しようとしています。
また、2 つのインスタンスで UITableView が詳細セクションに読み込まれているため、UISplitViewController に含まれているときに外観を単純に設定したくないため、不要な外観が変更されます。
外観プロキシなしでこれを行う別の方法はありますか?
ありがとう
編集 :
UINavigationController のサブクラスを作成してみましたが、[[UITableView appearanceWhenContainedIn:[PBMenuNavigationController class], nil] setBackgroundView:bgView];
これはメイン メニューでは正常に機能しますが、スタックにプッシュされた他の UITableView では機能しないため、今は本当に困っています :(