Swift如何检查TabBarController中的ViewController是否是特定类

时间:2017-10-25 16:51:10

标签: ios swift uiviewcontroller uitabbarcontroller

我想确定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())也不起作用

2 个答案:

答案 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
            }
        }

感谢您的回答!