0

Для этого вопроса я показываю урезанную версию моей иерархии представлений. В моем приложении содержится UITabBarController. Контроллер верхнего уровня каждой вкладки является контроллером навигации, и в нем есть контроллеры представлений, встроенные в каждый из них.Tabbar не будет скрываться при вводе в ViewController внутри UITabBarController

enter image description here

Давайте возьмем первую вкладку.

UITabBarController -> UINavigationController -> UITableViewController -> UIViewController

Допустим экземпляр UITableViewController является своего рода списком и UIViewController является детализированный вид. Когда пользователь нажимает на элемент из списка, он переходит к подробному представлению. И когда это произойдет, я установил : 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 
} 

я установил тот же hidesBottomBarWhenPushed свойство true в когда я создаю экземпляр контроллер представления, но это, кажется, не имеют никакого эффекта. Я даже попытался спрятать табуляцию, подобную этому, 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

Как следует из названия, контроллер просмотра должен быть * нажат * внутри навигационного контроллера –