31

タブバーコントローラーを備えたアプリケーションがあり、各ビューにはナビゲーションコントローラーが含まれています。私の MainWindow は次のようになります。

そのままですべて正常に動作しますが、詳細ビューをナビゲーション コントローラーにプッシュするときに問題に気付きました。タブバーコントローラー (画像では最新と呼ばれるもの) に属する tableviewcontroller の didSelectRowAtIndexPath で、私はこれを行っています:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    ArticleViewController *articleController = [[ArticleViewController alloc] initWithNibName:@"ArticleView" bundle:nil];

    [self.navigationController pushViewController:articleController animated:YES];

    [articleController release];
    articleController = nil;
}

ArticleViewController には、さまざまなものを表示する必要があるため、独自のタブバーがあります。問題は、ArticleViewController を navigationController にプッシュすると、ビューの下部に両方のタブバーが表示されることです。この問題を解決する方法はありますか?

前もって感謝します

4

8 に答える 8

99

ここに何時間もかけて質問を投稿した後、この問題の解決策は、ArticleController のインスタンス化の後に次の行を追加することであることがわかりました。

articleController.hidesBottomBarWhenPushed = YES;
于 2010-06-01T06:50:27.913 に答える
17

非常に簡単な解決策:

 destinationViewController.hidesBottomBarWhenPushed = YES;

あなたの場合:

 articleController.hidesBottomBarWhenPushed = YES;

お役に立てれば!

于 2013-02-26T07:37:34.270 に答える
5

プッシュしているView Controllerに以下のコードを追加できます。

-(BOOL)hidesBottomBarWhenPushed
{ 
     return YES;
}

これにより、プッシュされたView Controllerのみでタブバーが非表示になり、ポップするとView Controllerタブバーは残りのすべてのView Controllerで非表示のままになります。

Swift バージョン (3.x 以降)

override var hidesBottomBarWhenPushed: Bool {
    get {
        return navigationController?.topViewController == self
    }
    set {
        super.hidesBottomBarWhenPushed = newValue
    }
}

ありがとう

于 2016-10-22T20:15:27.630 に答える
1

ここに画像の説明を入力

Xcode のインターフェイス ビルダーに移動 -> 属性インスペクターを開き、タブ バーを表示したくないビュー コントローラーの [プッシュ時にボトム バーを非表示] の項目をチェックします。それが動作します!!

于 2017-09-28T07:08:20.727 に答える
1

hidesBottomBarWhenPushed非表示にするコントローラーでプロパティを使用します。

非表示の場合、すべてのコントローラーがprepare for segue

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    segue.destination.hidesBottomBarWhenPushed = true
}
于 2019-08-13T17:46:32.810 に答える