xyk blog

最近は iOS 開発の記事が多めです。

ツールバーを非表示にする

環境:iOS SDK 7.1

UINavigationController に新たな画面となる UIViewController をpushViewControllerする前に、その UIViewController のhidesBottomBarWhenPushedプロパティにYES を設定すればよい。以降の画面では自動的にツールバーが非表示になる。
前回やったtoolbarHiddenプロパティにYESを設定するやり方でも非表示にすることは可能だが、hidesBottomBarWhenPushedプロパティを使うと、再度元の画面(ツールバーを隠す前の画面)に戻ったときに、自動でツールバーが表示されるようになる。

f:id:xyk:20140911154431p:plain

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"TopView";
    self.view.backgroundColor = [UIColor lightGrayColor];

    // ツールバー表示
    self.navigationController.toolbarHidden = NO;

    // ナビゲーションバーに次へボタン追加
    UIBarButtonItem *btn1 = [[UIBarButtonItem alloc] initWithTitle:@"次へ"
                                                             style:UIBarButtonItemStylePlain
                                                            target:self
                                                            action:@selector(performNextButtonAction)];
    self.navigationItem.rightBarButtonItem = btn1;
}

- (void)performNextButtonAction
{
    NextViewController *viewController = [[NextViewController alloc] init];
    // 次の画面へ遷移する前に`hidesBottomBarWhenPushed`を YES にする
    viewController.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:viewController animated:YES];
}

hidesBottomBarWhenPushedプロパティは、あくまでも画面遷移のタイミングでツールバーを隠すかどうかという設定。画面遷移後に、UINavigationController のtoolbarHiddenプロパティをNOに設定すると、そちらが優先されてツールバーは表示される。