Ios 如何识别哪一个;“关系”;跟随的是一个超级阿巴斯控制器吗?
我在这张照片中说明了这种情况 简而言之,我有一个可以以不同方式配置的视图控制器,我希望能够通过IB指定这些方式。我认为这两个箭头是分段的,所以我想我应该覆盖Ios 如何识别哪一个;“关系”;跟随的是一个超级阿巴斯控制器吗?,ios,swift,uitabbarcontroller,uistoryboardsegue,Ios,Swift,Uitabbarcontroller,Uistoryboardsegue,我在这张照片中说明了这种情况 简而言之,我有一个可以以不同方式配置的视图控制器,我希望能够通过IB指定这些方式。我认为这两个箭头是分段的,所以我想我应该覆盖prepareforsgue:sender:,并根据每个segue的id配置目标视图控制器。我只需要在初始化时执行一次,所以我认为该方法可以工作。然而,这两个箭头并不是分段的——或者至少prepareforsgue:sender:不会为它们开火 像这样的事情能做到吗?在最坏的情况下,我可以通过编程实现这一点,这没什么大不了的,但我认为故事板
prepareforsgue:sender:
,并根据每个segue的id配置目标视图控制器。我只需要在初始化时执行一次,所以我认为该方法可以工作。然而,这两个箭头并不是分段的——或者至少prepareforsgue:sender:
不会为它们开火
像这样的事情能做到吗?在最坏的情况下,我可以通过编程实现这一点,这没什么大不了的,但我认为故事板很酷,所以为什么不使用它们呢?UITabBarController是一种容器视图控制器,其中包含的视图控制器在其自身初始化后不久就会初始化。可以将UINavigationController与其rootViewController进行类比。尽管在故事板中,容器视图控制器与其视图控制器之间似乎存在一个分段,但这些视图控制器是在初始化时创建的,并与容器视图控制器同时显示在屏幕上。UITabBarController是一个容器视图控制器,其中包含了视图控制器在其自身初始化后不久初始化。可以将UINavigationController与其rootViewController进行类比。尽管在故事板中,容器视图控制器与其视图控制器之间似乎存在一个分段,但这些视图控制器是在初始化时创建的,并与容器视图控制器同时显示在屏幕上。这些箭头是关系,而不是分段 在表视图控制器的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
}
}
}
}
//如果在情节提要中分配了恢复ID。。。。
func initializeChildren(选项卡栏:UITabBarController){
如果let children=tabBar.viewControllers{
儿童中的儿童{
让table=child作为!UITableViewController
switch table.restorationIdentifier{
案例“表1”:
table.title=“猫表”
打破
案例“表2”:
table.title=“狗表”
打破
违约:
打印(“未知子项!!!”)
打破
}
}
}
}
//如果可以“了解”选项卡顺序
func initializeChildren(选项卡栏:UITabBarController){
如果let children=tabBar.viewControllers{
对于变量i=0;i
这些箭头是关系,而不是顺序
在表视图控制器的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
}
}
}
}
//如果在情节提要中分配了恢复ID。。。。
func initializeChildren(选项卡栏:UITabBarController){
如果let children=tabBar.viewControllers{
儿童中的儿童{
让table=child作为!UITableViewController
switch table.restorationIdentifier{
案例“表1”:
table.title=“猫表”
打破
案例“表2”:
table.title=“狗表”
打破
违约:
打印(“未知子项!!!”)
打破
}
}
}
}
//如果可以“了解”选项卡顺序
func initializeChildren(选项卡栏:UITabBarController){
如果let children=tabBar.viewControllers{
对于变量i=0;i
prepareforsgue
应该为嵌入序列启动,但您需要有一个自定义uitabbarcontroller类来访问它。您应该能够在IB中使用用户定义的运行时属性,我认为这是一个好主意,但不幸的是,该类必须符合键值编码,您才能设置这样的运行时属性。因为我将属性附加到tabBarItem,所以除非我自己创建属性,否则不可能这样做。我可以用标签。@Morpheu5你看到我的答案了吗?这太容易了(除非我误解了你的问题)。事实上,我是今天才这么做的。@RobertVaessen我试过了,但我发现在选项卡栏视图控制器上运行viewDidLoad时,每个视图控制器的Tabbaritem都没有初始化。@Morpheu5哦,我没有注意到您想在TabBarController中进行初始化。我已经更新了我的答案。而且,因为我的答案很简单,我怀疑我可能仍然遗漏了一些关于您的情况的信息:-(prepareForSegue
应该为嵌入的segue触发,但是您需要有一个自定义的uitabbarcontroller类来进行访问