2010-11-25 19 views
0

私のAppDelegateでは、UITabBarControllerとUINavigationControllerを動的に作成します。私はそれに3つのビューを追加します。ビュー "ヘッダ/タイトル"バーにボタンを追加

私が最初にこれを行ったとき、私は今ページの上部にヘッダー/タイトルバーがあることに気付きました。それは空白で、実際にはスペースを取るだけです。私はそれを利用し、私の意見の1つに "リフレッシュ"ボタンを追加したいと思います。

は、私が興味ビューでは、私は次のことをしようとしません:

-(void)viewDidLoad { 
    [super viewDidLoad]; 

    UIBarButtonItem *refresh = [[UIBarButtonItem alloc] initWithTitle:@"Refresh" style:UIBarButtonItemStylePlain target:self action:@selector(refreshSwitches:)]; 
    self.navigationItem.rightBarButtonItem = refresh; 
    [refresh release]; 
} 

-(void)refresh{ 
    ... 
} 

いいえ]ボタンを示したので、私は道オフのどちらかだか私は何かが欠けています。

提案がありますか?

おかげ

+0

このコードから何がうまくいかないと言うのは難しいです。おそらく、あなたの初期化コード(view/navコントローラ用)をさらに表示できますか?また、viewDidLoadが呼び出されていることを確認しましたか? – Sam

+0

@Sam - はい、viewDidLoadが実行されています。投稿を編集して、ビューの初期コード、tabBarController、navControllerを追加しました。 – bugfixr

答えて

0

私はこの問題は、あなたがタブバーコントローラに追加したビューコントローラがナビゲーションコントローラによってカプセル化されていないということであると信じています。あなたのUITabBarControllerにはナビゲーションコントローラがありますが、これは暗黙のうちにすべてのタブナビゲーションコントローラを与えません(ナビゲーションコントローラなしで、ビューコントローラのnavigationItemは何もしません)。初期化時に、ナビゲーションコントローラ:

例:

UserSettingsController *settingsController = [[UserSettingsController alloc] init]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:settingsController]; 
[settingsController release]; 

// etc... 

NSArray *controllers = [NSArray arrayWithObjects:navController, ..., ..., nil]; 
tabBarController.viewControllers = controllers; 

// Release your nav controllers, other cleanup 

EDIT

さて、私は今、あなたのセットアップのより良いアイデアを持っていると思います。私は仕事に以下を得ることができた:

self.tabBarController.navigationItem.rightBarButtonItem = myButton; 

本の重要な注意点が明示的に削除しない限り、ボタンがあなたのtabbarcontrollerの意見のすべてに持続するということです。これは、維持するのは迷惑であることを証明するかもしれませんが、ボタンを表示したいビューがnavコントローラ自体に直接関連付けられていない場合は、別の解決方法がわかりません。

+0

これは異常です...私のsettingsControllerは "サブビュー"を持っています - 私はテーブルから行をクリックし、navコントローラに新しいビューを押して、それが動作します...このメソッドに変更すると、 "TabBarsのnavコントローラを削除するまで上部に表示されますが、それを行うとsettingsControllerからビューをプッシュすることができなくなります。 – bugfixr

+0

@Chu別の解決策で自分の答えを編集しました。ビューにnavコントローラを与えます)。 – Sam

関連する問題