如何识别哪种关系"正在跟随UITabBarController?

时间:2015-12-18 13:06:46

标签: ios swift uitabbarcontroller uistoryboardsegue

我有这张照片中说明的情况。

The storyboard

简而言之,我有一个可以用不同方式配置的视图控制器,我希望能够通过IB指定这些方式。我认为那两个箭头是segues,所以我想我会覆盖prepareForSegue:sender:,并根据每个segue的id配置目标视图控制器。我只需要在初始化时执行一次,因此我认为该方法可行。然而,这两个箭头结果不是分段 - 或者至少prepareForSegue:sender:并不是为它们射击。

这样的事情可以完成吗?最糟糕的情况是,我可以通过编程方式执行此操作,没什么大不了的,但我认为故事板很酷,为什么不使用它们呢?

2 个答案:

答案 0 :(得分:0)

UITabBarController是一个容器视图控制器,其中包含的视图控制器在其自己的初始化后不久就被初始化。可以通过UINavigationController和它的rootViewController进行类比。尽管在Storyboard中看起来容器视图控制器和它的视图控制器之间存在一个区别,但这些视图控制器是在初始化时创建的,并且在容器视图控制器的同时显示在屏幕上。

答案 1 :(得分:0)

这些箭是关系,而不是段落。

在表视图控制器的viewDidLoad方法中,您可以通过其选项卡栏项来区分它们。

如果你想从TabBarController的viewDidLoad方法进行初始化,那么:

// If restoration IDs were assigned in the Storyboard ....
func initializeChildren(tabBar: UITabBarController) {
    if let children = tabBar.viewControllers {
        for child in children {
            let table = child as! UITableViewController
            switch table.restorationIdentifier! {
                case "Tabel 1":
                    table.title = "Cats Table"
                    break
                case "Table 2":
                    table.title = "Dogs Table"
                    break
                default:
                    print("Unknown child!!!")
                    break
            }
        }
    }
}

// If it is okay to "know" the tab order
func initializeChildren(tabBar: UITabBarController) {
    if let children = tabBar.viewControllers {
        for var i = 0; i < children.count; ++i {
            let table = children[i] as! UITableViewController
            switch  i {
                case 0:
                    table.title = "Cats Table"
                    break
                 case 1:
                     table.title = "Dogs Table"
                     break
                 default:
                     print("Unknown child!!!")
                     break
            }
        }
    }
}