使用 nib ViewControllers 设置 UITabBarController
Setting up a UITabBarController with nib ViewControllers
好的,坚持到这一步,将不胜感激。
所以我在故事板的导航控制器中有一个选项卡控制器。
然后我有两个带有 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
}
}
您是从 UITabBarController
中调用 self.tabBarController
,这没有多大意义。
UIViewController
's tabBarController
returns "The nearest ancestor in the view controller hierarchy that is a tab bar controller." 在你的情况下可能是 nil 因为你的标签栏控制器不包含在另一个标签栏控制器中。
您可能只想直接调用 self.setViewControllers
。
此行为在 viewDidLoad
中可能比 viewWillAppear
更有意义,您真的要在每次出现标签栏时都更换每个标签的控制器吗?
好的,坚持到这一步,将不胜感激。
所以我在故事板的导航控制器中有一个选项卡控制器。
然后我有两个带有 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
}
}
您是从 UITabBarController
中调用 self.tabBarController
,这没有多大意义。
UIViewController
's tabBarController
returns "The nearest ancestor in the view controller hierarchy that is a tab bar controller." 在你的情况下可能是 nil 因为你的标签栏控制器不包含在另一个标签栏控制器中。
您可能只想直接调用 self.setViewControllers
。
此行为在 viewDidLoad
中可能比 viewWillAppear
更有意义,您真的要在每次出现标签栏时都更换每个标签的控制器吗?