使用未解析的标识符“LaunchScreenViewController”

Posted

技术标签:

【中文标题】使用未解析的标识符“LaunchScreenViewController”【英文标题】:Use of unresolved identifier 'LaunchScreenViewController' 【发布时间】:2018-09-12 06:17:55 【问题描述】:

我有一个问题,我想重新启动我的应用程序,但我只有一个解决方案。

它只弹出到 rootViewController。

我的代码:

   func restartApplication() 
    let viewController = LaunchScreenViewController()
    let navCtrl = UINavigationController(rootViewController: viewController)

    guard
        let window = UIApplication.shared.keyWindow,
        let rootViewController = window.rootViewController
        else 
            return
    

    navCtrl.view.frame = rootViewController.view.frame
    navCtrl.view.layoutIfNeeded()

    UIView.transition(with: window, duration: 0.3, options: .transitionCrossDissolve, animations: 
        window.rootViewController = navCtrl
    )


但我得到这个错误:

有什么问题?

【问题讨论】:

LaunchScreenViewController 在你的包中可用,你使用的是故事板还是 xib @Anbu.karthik 是的,我使用 LaunchScreen 故事板 为什么叫launchscreen,叫你最初的VC @Anbu.karthik 因为我想重新启动我的应用程序,而这只有一个解决方案 我明白,但在我的建议中没有必要,如果您需要帮助,请参阅:***.com/questions/30705214/… 【参考方案1】:

对于 xif 只需将这行代码替换为 ..

let viewController = LaunchScreenViewController(nibName: "LaunchScreenViewController", bundle: nil)

而不是这个..

let viewController = LaunchScreenViewController()

故事板

// global declaration 
let kApplicationDelegate = UIApplication.shared.delegate as! AppDelegate

// use this extension
extension UIViewController
    func changeStoryboardTo()
        let nav = UINavigationController(rootViewController: self)
        UIView.transition(with: (kApplicationDelegate.window)!,
                      duration:0.5,
                      options:UIViewAnimationOptions.transitionFlipFromLeft,
                      animations: 
                        kApplicationDelegate.window?.rootViewController = nav
                        // do something
        , completion:
           finished in
            // competion code
        )*/

    


extension UIStoryboard
 func getControllerInstance(storyBoardName : String, identifire : String) -> UIViewController 
        let objStoryBoard = UIStoryboard(name: storyBoardName, bundle: Bundle.main)
        let vc = objStoryBoard.instantiateViewController(withIdentifier: identifire)
    return vc
    

调用

_ = UIStoryboard().getControllerInstance(storyBoardName: "yourStoryboardName", identifire: "yourViewControllerIdentifire").changeStoryboardTo()

【讨论】:

你使用的是xib还是storyboard。 我使用故事板 @vaibhav - 想要加载启动屏幕或调用 didFinishLaunchingWithOptions 是的错误消失了,但我又得到了同样的错误“使用未解析的标识符'LaunchScreenViewController'” 您是否在正在使用的情节提要中为您的viewController 提供了标识符..【参考方案2】:

如果您正在使用情节提要并且已经为特定视图控制器设置了视图控制器标识符

let viewController = UIStoryboard(name: "LaunchScreenStoryboard", bundle: nil).instantiateViewControllerWith(identifier: "LaunchScreenViewController") as! LaunchScreenViewController

【讨论】:

使用未声明类型'LaunchScreenViewController' 您的项目中是否真的有任何名为 LaunchScreenViewController 的类。请检查是否有错别字。 想要加载启动屏幕或调用 didFinishLaunchingWithOptions

以上是关于使用未解析的标识符“LaunchScreenViewController”的主要内容,如果未能解决你的问题,请参考以下文章

使用未解析的标识符 'json' (Swift 3) (Alamofire)

使用未声明的类型“DKAsset”,使用未解析的标识符“DKImagePickerController”?

出现错误:使用未解析的标识符“LinkingObjects”

使用未解析的标识符 countElements [重复]

SDKApplicationDelegate 使用未解析的标识符

使用未解析的标识符“tableView”