web-dev-qa-db-ja.com

プッシュでビュー内のタブバーを非表示にする

tabBar + NavigationViewControllerがあります。タブバーには、セル(Say view1)のコレクションビューがあり、セルではプッシュシーグが別のビューに実装されています(Say view2).

view2では、navBarが必要ですが、タブバーは不要です。

私は試した

self.tabBarController?.tabBar.hidden = true

view2ではうまくいきましたが、view1に戻ったとき by back buttonタブはまだ隠されていた(view1クラスを追加self.tabBarController?.tabBar.hidden = false in viewDidLoad func)。

view1でタブバーを再表示するにはどうすればよいですか?

私はスウィフトで働いています。

20

viewDidloadで、UIViewController hidesBottomBarWhenPushed をyesに設定します。

self.hidesBottomBarWhenPushed = YES;

このようにして、UINavigationControllerがタブバーを非表示にします。

31
rckoenes

enter image description here

このオプションは、タブバーを非表示にするViewControllerでのみ確認してください。

iHarshil の提案に感謝します。

28

Prepareforsegueで使用する

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showRecipeDetail"]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    RecipeDetailViewController *destViewController = segue.destinationViewController;
    destViewController.recipeName = [recipes objectAtIndex:indexPath.row];

    // Hide bottom tab bar in the detail view
    destViewController.hidesBottomBarWhenPushed = YES;
}}

=)

24
Bruno

SwiftでのBruno Fernandesの答え:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "YourSegueIdentifier" {
        let destinationController = segue.destinationViewController as! YourViewController
        destinationController.hidesBottomBarWhenPushed = true
    }
}

これは私のために働いた答えでした。 hidesBottomBarWhenPushedメソッドにviewDidLoadを入れても機能しませんでした。

ありがとうブルーノ!

19
Mr Stanev

viewWillAppearまたはviewDidAppearを使用する必要があります。 viewDidLoadは、view1が初めてロード(表示)するときに呼び出されます。 view1からview2に移動して戻ると、viewDidLoadは再び呼び出されません。したがって、viewWillAppearまたはviewDidAppearを次のように使用する必要があります

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.tabBarController?.tabBar.hidden = false
}

このコードをview1コントローラーに配置します。 viewWillAppearまたはviewDidAppearは、view1に戻るたびに呼び出されます

3
andre_hold

TabBarController Bottom Barを非表示にする場合:#Swift

YourViewController内:ViewDidLoad()メソッド内

self.tabBarController?.tabBar.isHidden = false
2
Kiran jadhav