2017-03-03 30 views
1

私の目標は、ビューコントローラーを含むナビゲーションコントローラーで構成される複数のタブを管理するタブビューコントローラーを表示することです。カスタムタブビューコントローラーを表示しているのに黒い画面が表示される

AppDelegateのタブビューコントローラBaseTabBarControllerをウィンドウmyルートビューコントローラとして設定しました。カスタムタブビューコントローラは次のようになります。

class BaseTabBarController: ESTabBarController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     view.backgroundColor = .red 

     let v1 = BaseNavigationController(rootViewController: SubscriptionsController()) 
     let v2 = BaseNavigationController(rootViewController: SubscriptionsController()) 

     v1.tabBarItem = ESTabBarItem(title: "Home", image: #imageLiteral(resourceName: "tab_bar_home"), selectedImage: #imageLiteral(resourceName: "tab_bar_home")) 
     v2.tabBarItem = ESTabBarItem(title: "Home", image: #imageLiteral(resourceName: "tab_bar_home"), selectedImage: #imageLiteral(resourceName: "tab_bar_home")) 

     self.viewControllers = [v1, v2] 
     self.hidesBottomBarWhenPushed = true 
    } 
} 

カスタムナビゲーションコントローラクラスは、ナビゲーションコントローラの空のサブクラスです。

問題は、アプリケーションが1秒未満のタブバーを表示し、すぐに黒い画面に変わるという問題です(コンソールメッセージ:「分離されたビューコントローラーのビューコントローラーの表示はお勧めしません」)。私は何を間違えたのですか?

答えて

1

あなたのコードの他の部分で何かが間違っているはずです。私はあなたのコードを取ると、このすべてが期待どおりに動作ようにそれを使用する場合:

class BaseTabBarController: UITabBarController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     view.backgroundColor = .red 

     let v1 = UINavigationController(rootViewController: UIViewController()) 
     let v2 = UINavigationController(rootViewController: UIViewController()) 

     v1.tabBarItem = UITabBarItem(title: "Home", image: nil, selectedImage: nil) 
     v2.tabBarItem = UITabBarItem(title: "Home", image: nil, selectedImage: nil) 

     self.viewControllers = [v1, v2] 
     self.hidesBottomBarWhenPushed = true 
    } 
} 

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 
    window = UIWindow(frame: UIScreen.main.bounds) 
    window?.rootViewController = BaseTabBarController() 
    window?.makeKeyAndVisible() 

    return true 
} 
+0

@Cesareいいえ、それはしない... –

+0

感謝を。あなたは100%正しいです。問題は、ナビゲーションコントローラのルートビューコントローラです。 'class SubscriptionsController:UIViewController、UITableViewDelegate、UITableViewDataSource、DZNEmptyDataSetSource、DZNEmptyDataSetDelegate {...}'のようになります。これを標準の 'UIViewController()'と 'SubscriptionsController()'に変更してもうまくいきます。どんな考え? – Cesare

+0

SubscriptionsControllerの実装の詳細をもう少し見せたら、おそらく私は考えを得ることができます –

関連する問題