,因为我们知道,实现PageTabBarController,我们需要在AppDelegate.swift插入这些代码:Cosmicmind/Material:我如何在不使用AppDelegate.swift的情况下实现PageTabBarController?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
let viewControllers = [MatchDetailViewController(),ListPlayersViewController(),ChatViewController()]
window = UIWindow(frame: Device.bounds)
window!.rootViewController = MatchViewController(viewControllers: viewControllers, selectedIndex: 0)
window!.makeKeyAndVisible()
}
现在,我需要使用PageTabBarController当我想打开详细为我的比赛数据。我的问题是,如何在不插入AppDelegate.swift中的代码的情况下实现它,因为它将打开我的MatchViewController(从PageTabBarController扩展)用于第一次启动应用程序。
我曾尝试这个代码,但它会造成崩溃,并指了指我AppDelegate.swift
class MatchViewController: PageTabBarController {
var window: UIWindow?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
open override func prepare() {
super.prepare()
let viewControllers = [MatchDetailViewController(),ListPlayersViewController(),ChatViewController()]
//1st try: Crash
window = UIWindow(frame: Device.bounds)
window!.rootViewController = MatchViewController(viewControllers: viewControllers, selectedIndex: 0)
window!.makeKeyAndVisible()
//2nd try: error
self.rootViewController = MatchViewController(viewControllers: viewControllers, selectedIndex: 0)
//3rd try: crash
self.viewControllers = viewControllers
delegate = self
preparePageTabBar()
}
fileprivate func preparePageTabBar() {
pageTabBar.lineColor = Color.blue.base
pageTabBar.dividerColor = Color.blueGrey.lighten5
pageTabBarAlignment = PageTabBarAlignment.top
pageTabBar.lineAlignment = TabBarLineAlignment.bottom
}
}
extension MatchViewController: PageTabBarControllerDelegate {
func pageTabBarController(_ pageTabBarController: PageTabBarController, didTransitionTo viewController: UIViewController) {
}
}
感谢,我真的很熟悉添加的UIViewController作为一个孩子的控制器,但我必须找出另一种替代方案来实现的TabBar(使用的CollectionView )用于容器视图的标题和UIPageViewController –
只要您有解决方案,就可以了。我目前正在重构PageTabBarController,所以如果你有任何进一步的建议或问题,请让我知道,谢谢:) – CosmicMind