UITabBarController 中的 UINavigationController 没有完全包裹 UIViewController
Posted
技术标签:
【中文标题】UITabBarController 中的 UINavigationController 没有完全包裹 UIViewController【英文标题】:UINavigationController in UITabBarController not completely wraps UIViewController 【发布时间】:2019-04-29 13:28:50 【问题描述】:我有一个UITabBarController
作为我的rootViewcontroller
,每个标签有3 个UINavigationController
。每个UINavigationController
都有一个初始UIViewController
,它只有红色背景色。
我的问题是UINavigationController
在第一次开始时并没有完全覆盖UIViewController
。切换选项卡后,它覆盖了UIViewController
。那么我在这里做错了什么?
提前致谢。
AppDelegate:
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = TabBarViewController()
window?.makeKeyAndVisible()
UITabBarController:
class TabBarViewController: UITabBarController
override func viewDidLoad()
super.viewDidLoad()
// Navigation Tab
let navVC = NavigationViewController()
// Departure Tab
let depVC = DeparturesViewController()
// Settings Tab
let setVC = SettingsViewController()
self.viewControllers = [
createNavigationController(title: "Navigation", rootViewController: navVC, imageName: "map"),
createNavigationController(title: "Abfahrten", rootViewController: depVC, imageName: "station"),
createNavigationController(title: "Einstellungen", rootViewController: setVC, imageName: "user"),
]
private func createNavigationController(title: String, rootViewController: UIViewController, imageName: String) -> UINavigationController
rootViewController.title = title
let nc = UINavigationController(rootViewController: rootViewController)
nc.title = title
nc.view.backgroundColor = .white
nc.navigationBar.prefersLargeTitles = true
nc.navigationController?.navigationItem.largeTitleDisplayMode = .always
nc.tabBarItem.image = UIImage(named: imageName)?.withRenderingMode(UIImage.RenderingMode.alwaysTemplate)
return nc
override func viewWillAppear(_ animated: Bool)
self.selectedIndex = 0
非常简单的 UIViewController:
class NavigationViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
self.view.backgroundColor = .red
【问题讨论】:
能否请您尝试将 nc.view.background 更改为 rootViewController.view.backgroundcolor 出现同样的效果。此外,如果我根本没有设置背景颜色,则相同的效果会出现黑色 【参考方案1】:从 TabBarController 中删除以下代码后,它完全包装了 Viewcontroller
override func viewWillAppear(_ animated: Bool)
self.selectedIndex = 0
但我无法解释原因
【讨论】:
以上是关于UITabBarController 中的 UINavigationController 没有完全包裹 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
UITabBarController 问题中的 UINavigationController
UITabBarController 中的 UINavigationController 没有完全包裹 UIViewController