Я пытаюсь создать собственный TabBar
. До сих пор мой подход заключался в создании одного UIViewController
(назовем его TabBarController
). В TabBarController
я добавил childVC
(назовем его UserViewController
).
Я не мог найти способ изменить UserViewController
без исчезновения TabBarController
.
Я начал думать, что, возможно, это не очень хороший вариант, и что есть лучший, действительно работающий способ сделать это. Все, чего я действительно пытаюсь достичь, это TabBarController
, отделенный от UserViewController
, TabBarController
всегда будет отображаться в нижней части экрана, и, щелкая элементы в нем, UserViewController
изменится соответствующим образом.
Я искал часами, пробовал разные решения, ничего не получалось. Очень надеюсь, что вы могли бы направить меня, может быть, поделиться учебником или статьей, которая у вас есть об этом.
1 ответ
Создайте подкласс UITabBarViewController
.
class TabBarController: UITabBarController {
var previousTabIndex: Int?
override func viewDidLoad() {
super.viewDidLoad()
let viewControllerOne = ViewController()
viewControllerOne.tabBarItem.image = UIImage(named: "one")
viewControllerOne.tabBarItem.title = "One"
let viewControllerTwo = ViewController()
viewControllerTwo.tabBarItem.image = UIImage(named: "two")
viewControllerTwo.tabBarItem.title = "Two"
let viewControllerThree = ViewController()
viewControllerThree.tabBarItem.title = "Premium"
viewControllerThree.tabBarItem.image = UIImage(named: "three")
let tabBarList = [
viewControllerOne,
viewControllerTwo,
viewControllerThree
]
self.viewControllers = tabBarList.map {
let nav = UINavigationController(rootViewController: $0)
return nav
}
}
}
А затем в SceneDelegate
установите window.rootViewController = TabBarController()
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = TabBarController()
self.window = window
window.makeKeyAndVisible()
}
}
Если вы создали свой проект в более старой версии xCode, назначьте TabBarController()
для window.rootController
в didFinishLaunchingWithOptions
из AppDelegate
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.