Für den Zweck dieser Frage zeige ich eine abgespeckte Version meiner Ansichtshierarchie. Meine App enthält eine UITabBarController
als Basis. Der oberste View-Controller der einzelnen Registerkarten ist ein Navigationscontroller und in jedem von ihnen sind View-Controller eingebettet.Die Registerkarte wird nicht ausgeblendet, wenn sie in einen ViewController in einem UITabBarController geschoben wird
Lassen Sie uns die ersten Reiter nehmen.
UITabBarController -> UINavigationController -> UITableViewController -> UIViewController
Lassen Sie uns sagen, dass die UITableViewController
Beispiel eine Art von einer Liste und die UIViewController
ist die Detailansicht. Wenn der Benutzer auf ein Element in der Liste klickt, gelangen Sie zur Detailansicht. Und wenn das passiert, habe ich die UIViewController
hidesBottomBarWhenPushed
Eigenschaft auf true
so eingestellt, dass die Registerkarte am unteren Rand ausblenden würde, wenn der Benutzer in der Detailansicht ist.
erhält Meine App Push-Benachrichtigungen. Wenn auf sie geklopft wird, sollte es direkt in die Detailansicht öffnen. Ich kann es dorthin bringen. Aber das Problem ist die Tableiste unten ist immer noch sichtbar!
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
}
stellte ich die gleiche hidesBottomBarWhenPushed
Eigenschaft true
in dem, wenn ich den View-Controller instanziiert, aber das scheint keine Wirkung zu haben. Ich habe sogar gerade versucht, die Tabbar so zu verstecken tabBarController.tabBar.isHidden = true
, aber das tut auch gar nichts.
Ich kann nicht herausfinden, wie man das löst. Jede Hilfe wäre willkommen.
Ich fügte ein Beispiel Xcode-Projekt here als auch wenn das hilft.
Danke an init! Das hat funktioniert. – Isuru
Wie der Name schon sagt, musste der View-Controller * innerhalb des Navigations-Controllers * gedrückt * werden –