2017-03-03 74 views
1

我的目标是显示一个选项卡视图控制器,该选项卡视图控制器管理由包含视图控制器的导航控制器组成的多个选项卡。呈现自定义选项卡视图控制器但出现黑屏

我将选项卡视图控制器BaseTabBarController设置为窗口我的根视图控制器在AppDelegate中。我的自定义选项卡视图控制器看起来是这样的:

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

您的代码的其他部分出现了问题。当我把你的代码,并像这样使用一切正常预期:

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的实现,也许我可以得到一个想法 –