我有这张照片中说明的情况。
简而言之,我有一个可以用不同方式配置的视图控制器,我希望能够通过IB指定这些方式。我认为那两个箭头是segues,所以我想我会覆盖prepareForSegue:sender:
,并根据每个segue的id配置目标视图控制器。我只需要在初始化时执行一次,因此我认为该方法可行。然而,这两个箭头结果不是分段 - 或者至少prepareForSegue:sender:
并不是为它们射击。
这样的事情可以完成吗?最糟糕的情况是,我可以通过编程方式执行此操作,没什么大不了的,但我认为故事板很酷,为什么不使用它们呢?
答案 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
}
}
}
}