2016-12-05 8 views
1

私たちが知っているように、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にそれらのコードを挿入せずに実装する方法です.AppTelegate.swiftは、最初のアプリの起動時にMatchTextController(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) { 

    } 
} 

答えて

0

Linked GitHub Question

こんにちは、はい方法があると指摘しました。他のUIViewControllerの子として追加することを可能にするUIViewController` PageTabBarController is inherited from aがあります。それは、ちょうど私に素晴らしいアイデアをくれたと言いました。私はあなたがこれを簡単にする多くの子UIViewControllerを追加することを可能にする新しいUIViewControllerを作るつもりです。私はこれをフィーチャーリクエストとします。

更新まで、子のUIViewControllerとして追加する方法をお勧めします。あなたはそれを行う方法に精通していますか?

+0

おかげで、子供のコントローラとしてのUIViewControllerを追加すると、非常に馴染みi'm、しかし、私はCollectionViewを使用して(TabBarのを実装するために、別の選択肢を把握しています)、コンテナビューのUIPageViewController –

+0

ああ、大丈夫です...解決策がある限り。私は現在、PageTabBarControllerをリファクタリングしていますので、それ以上の提案や質問があればお知らせください、ありがとうございます:) – CosmicMind

0

最初にAppToolbarController(ToolbarControllerのサブクラス)を作成するか、MaterialライブラリデモのAppToolbarControllerを使用します。

そして、あなたのビューコントローラから、あなたが使用することができます。

DispatchQueue.main.async { 
let tabbarViewController = AppPageTabbarController(viewControllers: [vc1,vc2,vc3], selectedIndex: 0) 
self.present(AppToolbarController(rootViewontroller: tabbarViewController)) 
} 
関連する問題