Storyboardで次のセットアップを取得しようとしています。
最初にテーブルビューがあり、セルをタップすると、動作するTab Bar Controllerに移行する必要があります。しかし、今では、最も適切な2つのコントローラーにタイトルと追加のナビゲーションバーボタンが必要です。
しかし、ボタンをそこにドラッグしたり、タイトルを設定するときに何も表示されないようです。ストーリーボードでこの設定を実現するにはどうすればよいですか?
編集:
以下の回答に基づいて、質問を更新しました。
この新しいセットアップがある場合(その間に追加のナビゲーションコントローラーを使用する場合)、ストーリーボードでタイトルを設定できますが、アプリを実行すると、追加されたタイトルは表示されません。
編集:私は アップロード 正確にそのセットアップでxcodeプロジェクトを持っています。おそらくそれは重宝するでしょう。
UINavigationBar
タイトルを変更するために(他の2つのUINavigationController
を作成する必要なしに)使用できます
[self.parentViewController.navigationItem setTitle:@"Title"];
右ボタンを追加するために使用します
self.parentViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(myRightButton)];
viewDidLoad
から参照される各UIViewController
のUITabBarController
メソッド。
UIViewController
からのTabItems
内の「ナビゲーション構造」で作業する場合、BUFViewController.mを編集できます。
#import "BUFViewController.h"
@interface BUFViewController ()
@end
@implementation BUFViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self.parentViewController.navigationController setNavigationBarHidden:YES];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)];
}
-(void)done{
[self.parentViewController.navigationController popToRootViewControllerAnimated:YES];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
UITabBarController
は親NavigationController
の中にあると考える必要があるため、親UINavigationBar
を非表示にして自分のものを表示する必要があります。その後、親のpopToRootViewControllerAnimated
でUINavigationController
:を使用してテーブルに戻ることができます。
それが役立つことを願っています:)
誰かがSwiftアプローチを探していた場合に備えて:
tabBarController?.title = "Your Title"
tabBarController?.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Right Button Title", style: UIBarButtonItemStyle.Plain, target: self, action: "rightButtonFunction")
コードはviewDidAppear
またはviewWillAppear
に配置するのが最適であるため、さまざまなタブを押すとタイトルとボタンが変わります。
また、このアプローチでは追加のNavigation Controllerは必要ありません。
テストアプリを見て、ナビゲーションバーの下に非常にかすかにタイトルが表示されています。 Tab Bar Controllerを選択し、「Under Top Bars」ボックスをオフにすると、両方のナビゲーションバーが表示されます。ただし、これにより、ナビゲーションバーに奇妙な影ができます。これを簡単に修正する方法があるかどうかはわかりませんが、2つのナビゲーションバーを備えたこのUIが良いとは思いません。最初のNavigation Controllerを削除し、モーダルセグエを使用して代わりにTab Bar Controllerを表示することができます。モーダルビューコントローラーを破棄する必要があるナビゲーションコントローラーにバーボタン項目を追加できます。
これらのView ControllerをUINavigationViewControllers
に置き換える必要があります。
右側の2つのView Controllerを削除します。
2 UINavigationViewControllers
をストーリーボードにドラッグドロップし、好きなように配置します。
次に、これらの新しいNavigation View ControllerをTab Bar Controllerにフックする必要があります。 Ctrlを押しながらTab Bar ControllerからNavigation Controllerにドラッグします。表示されるメニューの[関係セグエ]セクションから[コントローラーの表示]を選択します。両方のNavigation Controllerに対してこれを行います。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"Overview_Register"])
{
WDRegisterViewController *obj=(WDRegisterViewController *)[segue destinationViewController];
obj.str_Title=@"Edit Profile";
obj.isRegister=NO;
}
}
[self performSegueWithIdentifier:@"Overview_Measure" sender:nil];
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
WDPeekViewController *Peek = (WDPeekViewController *)[sb instantiateViewControllerWithIdentifier:@"WDPeekViewController"];
[self.navigationController pushViewController:tabBarController animated:YES];