0

この質問の目的のために、私はビュー階層を削除したバージョンを表示しています。私のアプリはUITabBarControllerをベースにしています。各タブの最上位のビューコントローラはナビゲーションコントローラであり、それぞれにビューコントローラが組み込まれています。UITabBarController内のViewControllerにプッシュするとタブバーが非表示にならない

enter image description here

のは、最初のタブを見てみましょう。

UITabBarController - > UINavigationController - >のUITableViewController - >のUIViewController

のはUITableViewControllerインスタンスは、リストのいくつかの並べ替えで、UIViewControllerは詳細図であるとしましょう。ユーザーがリストの項目をタップすると、詳細ビ​​ューに移動します。そしてそれが起こったとき、UIViewControllerhidesBottomBarWhenPushedプロパティをtrueに設定して、ユーザが詳細ビューにあるときに、下部のタブバーが隠れるようにしました。

enter image description hereenter image description here

私のアプリはプッシュ通知を受け取ります。それらをタップすると、詳細ビ​​ューに直接開きます。私はそれをナビゲートすることができます。しかし、問題は、下部のタブバーがまだ見えることです!

enter image description here

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

    let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main) 
    window = UIWindow(frame: UIScreen.main.bounds) 

    let tabBarController = storyboard.instantiateViewController(withIdentifier: "TabBarController") as! TabBarController 

    if openingFromPush { 
     let firstNavigationController = storyboard.instantiateViewController(withIdentifier: "FirstNavigationController") as! UINavigationController 
     let tableViewController = storyboard.instantiateViewController(withIdentifier: "TableViewController") as! TableViewController 
     let viewController = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController 
     viewController.hidesBottomBarWhenPushed = true 
     firstNavigationController.viewControllers = [tableViewController, viewController] 

     tabBarController.viewControllers?[0] = firstNavigationController 
     // tabBarController.tabBar.isHidden = true 
     window?.rootViewController = tabBarController 
    } else { 
     window?.rootViewController = tabBarController 
    } 

    window?.makeKeyAndVisible() 
    return true 
} 

私はビューコントローラをインスタンスが、それがどんな効果を持っていないようだとき、私は中trueに同じhidesBottomBarWhenPushedプロパティを設定します。私はこのtabBarController.tabBar.isHidden = trueのようにタブバーをまっすぐに見てみましたが、何もしません。

これを解決する方法を理解できません。どんな助けもありがとう。

サンプルXcodeプロジェクトhereも添付しました。あなたが詳細ビューコントローラをプッシュするため、このコードを使用することができます

答えて

3

if openingFromPush { 
      let viewController = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController 
      viewController.hidesBottomBarWhenPushed = true 
      if let nvc = tabBarController.viewControllers?[0] as? UINavigationController { 
       nvc.pushViewController(viewController, animated: false) 
      } 

      window?.rootViewController = tabBarController 
     } 

あなたは、タブバーコントローラ

+0

の内側にそのすでに再びナビゲーション・ビュー・コントローラとテーブルビューコントローラを初期化する必要はありませんありがとうございます!それはうまくいった。 – Isuru

+0

名前が示すように、ビューコントローラはナビゲーションコントローラ内で*プッシュ*する必要がありました –

関連する問題