我有一个tabBarController
和两个UINavigationControllers
UITableViews
附加到tabBarController
。见下图。
我已将tabBarController
子类化,因此我可以通过引用在两个表之间传递一组自定义对象。但是,每当我加载标签时,项目都不会出现。它们仍然可以被选中但你却看不到它们。下图显示tabBar
没有items
显示
我有一种感觉,因为我正在实例化viewControllers
并且UINavigationController
未加载。我只是不确定如何首先加载UINavigationController
。
我使用的代码如下:
var table1 : AllPlacesViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("AllPlaces") as AllPlacesViewController
var table2:AttendingPlacesTableViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("AttendingPlaces") as AttendingPlacesTableViewController
table1.delegate = self
table2.delegate = self
var navController1 = UINavigationController(rootViewController: table1)
var navController2 = UINavigationController(rootViewController: table2)
self.viewControllers = [navController1, navController2]
我这样设置它的原因是因为我希望通过引用在viewControllers
之间共享数据。
答案 0 :(得分:1)
您是否使用“编辑器|嵌入”选项将导航控制器嵌入Tabbar?这非常重要!带有导航控制器的Tabbars在旧版本中是个问题,但是这个XCode函数有助于解决我认为的这类问题。
答案 1 :(得分:0)
通过在代码中设置一组不同的视图控制器,您将覆盖在故事板中设置的所有内容。无需在代码中创建任何这些对象,因为它们将由故事板实例化。
修改强>
相反,为每个 Segues
设置唯一标识符,并在自定义标签栏控制器中覆盖'prepareForSegue'方法
// MARK: - Segue handling
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == kSegue_YourSegueIdentifier {
if let viewController : YourCustomVC = segue.destinationViewController as? YourCustomVC {
viewController.delegate = self
}
}
}
调整方法以检查所有相关的segue标识符,或者在UINavigationControllers的情况下,获取它的根视图控制器以设置委托等。
我对图像中的故事板没有给予足够的重视。标签栏视图控制器的选项卡和导航控制器的根视图控制器segue将没有segue标识符。
您可以通过迭代viewControllers
中的标签栏控制器的viewDidLoad
数组来直接访问它们。
编辑2:
您可以轻松地遍历视图控制器
for viewController in self.tabBarController!.viewControllers! {
if let navigationController = viewController as? UINavigationController {
if let yourCustomVC = navigationController as? YourCustomVCClass {
yourCustomVC.delegate = self
}
}
}
答案 2 :(得分:0)
在代码中创建navigationControllers,忽略了一个故事板UINavigationControllers,UITabBarItem会自动为您创建UITabBarItem,这就是为什么你什么也看不见。 您还需要为每个自定义navigationControllers
创建一个UITabBarItem