この質問の目的のために、私はビュー階層を削除したバージョンを表示しています。私のアプリはUITabBarController
をベースにしています。各タブの最上位のビューコントローラはナビゲーションコントローラであり、それぞれにビューコントローラが組み込まれています。UITabBarController内のViewControllerにプッシュするとタブバーが非表示にならない
のは、最初のタブを見てみましょう。
UITabBarController - > UINavigationController - >のUITableViewController - >のUIViewController
のはUITableViewController
インスタンスは、リストのいくつかの並べ替えで、UIViewController
は詳細図であるとしましょう。ユーザーがリストの項目をタップすると、詳細ビューに移動します。そしてそれが起こったとき、UIViewController
のhidesBottomBarWhenPushed
プロパティをtrue
に設定して、ユーザが詳細ビューにあるときに、下部のタブバーが隠れるようにしました。
私のアプリはプッシュ通知を受け取ります。それらをタップすると、詳細ビューに直接開きます。私はそれをナビゲートすることができます。しかし、問題は、下部のタブバーがまだ見えることです!
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も添付しました。あなたが詳細ビューコントローラをプッシュするため、このコードを使用することができます
の内側にそのすでに再びナビゲーション・ビュー・コントローラとテーブルビューコントローラを初期化する必要はありませんありがとうございます!それはうまくいった。 – Isuru
名前が示すように、ビューコントローラはナビゲーションコントローラ内で*プッシュ*する必要がありました –