我想确定TabBarController的第一个VC是否是SearchVC,如果是,则在启动时加载第二个VC。我已经创建了TabBarController的子类,并在viewDidLoad()方法中尝试了以下内容:
if let first = self.viewControllers?[0] as? SearchVC{
self.selectedIndex = 1
}else{
self.selectedIndex = 0
}
和
if self.viewControllers?[0] is SearchVC{
self.selectedIndex = 1
}else{
self.selectedIndex = 0
}
第一个控制器是SearchVC,它应该为1时返回0
编辑:if self.viewControllers?[0].isKind(of: SearchVC())
也不起作用
答案 0 :(得分:0)
这是协议的一个很好的用例&协议一致性。
首先,您可以创建如下协议:
protocol TabBarInitial { }
不需要变量或函数。
接下来,让您的SearchVC符合它:
class SearchVC: TabBarInitial { ... }
使用三元组设置值时测试协议一致性:
selectedIndex = viewControllers.first is TabBarInitial ? 1 : 0
答案 1 :(得分:0)
我错过了我的SearchVC控制器嵌入UINavigationController的事实。下面的代码解决了我的问题:
if let firstNav = self.viewControllers?[0] as? UINavigationController{
if let first = firstNav.viewControllers.first as? SearchVC{
self.selectedIndex = 1
}else{
self.selectedIndex = 0
}
}
感谢您的回答!