开发者社区> 问答> 正文

如何检查视图控制器是否具有指定的标识符可用

在我的应用程序标识符中,来自服务器,我们使用它们作为视图控制器标识符。在这里,我想检查具有指定标识符的ViewController是否可用。如果可用,则只向该控制器推送,否则只返回。我已经编写了如下代码。

let identifier = Constants.menuSections[indexPath.section-1][indexPath.row-1]

if let vc1 = (self.storyboard?.instantiateViewController(withIdentifier:identifier)){
    let navi = BaseNaviViewController(rootViewController:vc1)
    navi.navigationBar.tintColor = .white
    navi.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
    sideMenuController?.embed(centerViewController:navi, cacheIdentifier:identifier)

}else {
    return
}

我说错了

由于“NSInvalidArgumentException”异常终止应用程序,原因:“Storyboard()不包含带有标识符”ABC“的视图控制器

展开
收起
游客5akardh5cojhg 2019-12-11 22:08:48 475 0
1 条回答
写回答
取消 提交回答
  • 最后,我找到了一个解决办法

    extension UIStoryboard {
        func instantiateVC(withIdentifier identifier: String) -> UIViewController? {
            // "identifierToNibNameMap" – dont change it. It is a key for searching IDs 
            if let identifiersList = self.value(forKey: "identifierToNibNameMap") as? [String: Any] {
                if identifiersList[identifier] != nil {
                    return self.instantiateViewController(withIdentifier: identifier)
                }
            }
            return nil
        }
    }
    
    

    我用了如下的方法

    let identifier = Constants.menuSections[indexPath.section-1][indexPath.row-1]
    
     if let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateVC(withIdentifier: identifier) {
              let navi = BaseNaviViewController(rootViewController:viewController)
                     navi.navigationBar.tintColor = .white
                     navi.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
                     sideMenuController?.embed(centerViewController:navi, cacheIdentifier:identifier)
            }
            else {
    
                ServerService.ShowAlertMessage(ErrorMessage: "No controller Available", title: "Oops . . . !", view: self)
            }
    
    2019-12-11 22:09:25
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
对象的生命期管理 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多