使用nib ViewControllers设置UITabBarController

时间:2016-10-12 14:54:29

标签: ios swift xcode swift2 uitabbarcontroller

好好坚持这一点,非常感谢帮助。

所以我在故事板中的导航控制器中有一个标签控制器。

然后我有两个带有nib文件的视图控制器,我想以编程方式加载到选项卡控制器中。我正在使用以下代码,但在加载应用程序时出现空白屏幕。

class MainTabBarController: UITabBarController, UITabBarControllerDelegate {

override func viewDidLoad() {
    super.viewDidLoad()
    delegate = self
}

override func viewDidAppear(animated: Bool) {
    super.viewWillAppear(animated)

    let verbViewController = VerbViewController(nibName: "VerbViewController", bundle: nil)
    let communityViewController = CommunityViewController(nibName: "CommunityViewController", bundle: nil)

    let tabIcon1 = UITabBarItem(title: nil, image: UIImage(named: "VerbTab"), tag: 0)
    let tabIcon5 = UITabBarItem(title: nil, image: UIImage(named: "CommunityTab"), selectedImage: nil)


    verbViewController.tabBarItem = tabIcon1
    communityViewController.tabBarItem = tabIcon5

    let tabControllers = [verbViewController, communityViewController]
    self.tabBarController?.setViewControllers(tabControllers, animated: true)
    self.viewControllers = tabControllers
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Delegate method
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
    return true
}

}

1 个答案:

答案 0 :(得分:1)

您正在self.tabBarController内拨打UITabBarController并且没有多大意义。

UIViewController' s tabBarController返回"视图控制器层次结构中最近的祖先是标签栏控制器。"在你的情况下可能是零,因为你的标签栏控制器不包含在另一个标签栏控制器中。

您可能只想直接致电self.setViewControllers

这种行为在viewDidLoad而不是viewWillAppear中可能更有意义,每次标签栏出现时,您真的想要替换每个标签的控制器吗?