Ios 显示自定义选项卡视图控制器但出现黑屏

Ios 显示自定义选项卡视图控制器但出现黑屏,ios,uinavigationcontroller,tabview,Ios,Uinavigationcontroller,Tabview,我的目标是显示一个选项卡视图控制器,该控制器管理由包含视图控制器的导航控制器组成的多个选项卡 我将选项卡视图控制器BaseTabBarController设置为AppDelegate中的窗口我的根视图控制器。我的自定义选项卡视图控制器如下所示: class BaseTabBarController: ESTabBarController { override func viewDidLoad() { super.viewDidLoad() view.ba

我的目标是显示一个选项卡视图控制器,该控制器管理由包含视图控制器的导航控制器组成的多个选项卡

我将选项卡视图控制器
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
    }
}
我的自定义导航控制器类是导航控制器的空子类


问题在于,该应用程序在短短几秒钟内显示一个选项卡栏,并立即变为黑屏(控制台消息:“不建议在分离的视图控制器上显示视图控制器”)。我做错了什么?

您的代码的其他部分肯定有问题。当我使用您的代码并像这样使用它时,一切都按预期工作:

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
}

谢谢你完全正确。问题是导航控制器的根视图控制器。它看起来是这样的:
类订阅控制器:UIViewController、UITableViewDelegate、UITableViewDataSource、DZNEmptyDataSetSource、DZNEmptyDataSetDelegate{…}
。如果我把它改回标准的
UIViewController()
,而不再是
subscriptioncontroller()
,它就可以正常工作了。你知道为什么吗?如果你再给我看一些SubscriptionsController的实现,也许我可以肯定地知道,谢谢!这是一个标准的视图控制器,它加载一个表视图井。。。由于我不知道你的应用程序到底是如何工作的,我会尝试注释掉所有的
(self)。提出[…]
呼叫,然后重试。然后我会一个接一个地评论他们,看看哪里出了问题。哦,哇,很棒的提示。非常感谢。我在演示一个完全随机的视图控制器。