実現したいこと
XLPagerTabStripというライブラリを使って上タブを実装しているのですが、今回下タブも追加したいと思いUITabBarControllerの上にXLPagerTabStripで作った上タブをのせたいと考えています
困っていること
TabBarに追加する時のinitialize引数でNSCoderを渡す必要があるのですがこれにいったい何を渡せばいいのかわからず困っています。
TabBarのコードは以下です。Rootで開くVCをSceneDelegateでTabViewControllerにしているのでrequired initは通らずに普通のinitで初期化されてしまう為NSCoderをinit時に取得することができません。
どうしたらいいのでしょうか?
swift
1class TabViewController: UITabBarController { 2 3 init(){ 4 super.init(nibName: String(describing: TabViewController.self), bundle: nil) 5 } 6 7 required init?(coder aDecoder: NSCoder) { 8 super.init(coder: aDecoder) 9 } 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 14 var viewControllers: [UIViewController] = [] 15 let firstViewController = UINavigationController(rootViewController: UpperTabListBaseViewController(coder: // ここにい何を入れていいのかわからない)) 16 firstViewController.tabBarItem = UITabBarItem(title: "ホーム", image: #imageLiteral(resourceName: "home"), tag: 1) 17 viewControllers.append(firstViewController) 18 } 19} 20
追記
UpperTabListBaseViewControllerのコードです
class UpperTabListBaseViewController: BaseButtonBarPagerTabStripViewController<UpperTabStockDayCollectionViewCell> { required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) buttonBarItemSpec = ButtonBarItemSpec.nibFile(nibName: "UpperTabStockDayCollectionViewCell", bundle: Bundle(for: UpperTabStockDayCollectionViewCell), width: { _ in return 70 }) let cellHeight: CGFloat = 50 let statusBarHeight = UIApplication.shared.statusBarFrame.height settings.style.buttonBarHeight = cellHeight + statusBarHeight settings.style.buttonBarBackgroundColor = .lightGray } override func viewDidLoad() { super.viewDidLoad() } override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] { return [ StockListViewController(itemInfo: IndicatorInfo(image: UIImage(named: "main-icon"))), OneWeekStockListViewController(itemInfo: IndicatorInfo(image: UIImage(named: "monday")), dayOfTheWeek: .monday), OneWeekStockListViewController(itemInfo: IndicatorInfo(image: UIImage(named: "tuesday")), dayOfTheWeek: .tuesday), OneWeekStockListViewController(itemInfo: IndicatorInfo(image: UIImage(named: "wednesday")), dayOfTheWeek: .wednesday), OneWeekStockListViewController(itemInfo: IndicatorInfo(image: UIImage(named: "thursday")), dayOfTheWeek: .thursday), OneWeekStockListViewController(itemInfo: IndicatorInfo(image: UIImage(named: "friday")), dayOfTheWeek: .friday), OneWeekStockListViewController(itemInfo: IndicatorInfo(image: UIImage(named: "saturday")), dayOfTheWeek: .saturday), OneWeekStockListViewController(itemInfo: IndicatorInfo(image: UIImage(named: "sunday")), dayOfTheWeek: .sunday) ] } override func configure(cell: UpperTabStockDayCollectionViewCell, for indicatorInfo: IndicatorInfo) { cell.image.image = indicatorInfo.image?.withRenderingMode(.alwaysOriginal) } }
あなたの回答
tips
プレビュー