Xcode:LaunchScreen.storyboard 未显示

Posted

技术标签:

【中文标题】Xcode:LaunchScreen.storyboard 未显示【英文标题】:Xcode: LaunchScreen.storyboard is not showing up 【发布时间】:2015-10-17 16:15:33 【问题描述】:

我正在尝试设置我的应用的启动屏幕和初始视图。但是,我不能让任何一个出现。

我已经设置好了:

我错过了一步吗?我不应该看到一个带有“blah”的页面作为启动屏幕吗?相反,当我运行模拟器时,它只是黑色。

另外,我不明白为什么我的初始视图也没有显示。

在我的 AppDelegate.swift 文件中:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate 

  var window: UIWindow?

  func application(application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
        self.window?.rootViewController = self.rootViewController()
    return true
  

  private func rootViewController() -> UIViewController 
    return MapViewController.init()
  


还有我的 MapViewController.swift:

import UIKit

class MapViewController: UIViewController 

    override func viewDidLoad() 
        super.viewDidLoad()
        var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
        label.center = CGPointMake(160, 284)
        label.textAlignment = NSTextAlignment.Center
        label.text = "I am a test label"
        self.view.addSubview(label)
        NSLog("heyyyy!!") // <----------------- doesn't get printed either, so I think I'm missing something again...
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    


    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    
    */


对不起,菜鸟问题。

== 更新 ==

我在构建它时确实收到了这两个警告:

file:///Users/emai/Documents/ios/Sherpa/SherpaNewYork/LaunchScreen.storyboard:警告:不支持的配置:场景由于缺少入口点而无法访问,并且没有通过 -instantiateViewControllerWithIdentifier 进行运行时访问的标识符:.

/Users/emai/Documents/ios/Sherpa/SherpaNewYork/LaunchScreen.storyboard:9:场景由于缺少入口点而无法访问,并且没有通过 -instantiateViewControllerWithIdentifier: 进行运行时访问的标识符。

【问题讨论】:

构建时,是否有关于启动屏幕的警告? 是的,让我为你粘贴它 不要忽略警告。修复所有警告。一个应用真的应该(必须)编译无警告。 是的,有道理...我用警告更新了问题 不是真的“必须”。在一个复杂的项目中(尤其是在现实世界的时间限制下),管理所有警告是完全不切实际的,尤其是在约束问题方面。 【参考方案1】:

我还为启动屏幕故事板不显示而苦苦挣扎。我尝试了所有可以解决的问题,但无济于事。然后我清除了模拟器上的缓存,它工作了!原来这是一个模拟器问题。我在终端中使用以下命令清除了缓存:xcrun simctl erase all

【讨论】:

这就是答案。谢谢你。这是一个如此愚蠢的错误,如此令人厌烦。这是唯一最终纠正了我的启动屏幕故事板未显示的问题。 仅供参考,如果您在机器上使用多个版本的 Xcode,请不要使用此终端命令。您将失去与模拟器的连接并导致更多问题。 是的,这也是我的答案……太生气了! 感谢您提及模拟器。我运行了多个 Xcode 版本,因此在重新运行之前从模拟器中删除应用程序为我解决了问题。 这对我来说适用于 xcode 11.2.1 和 SwiftUI 模板。【参考方案2】:

您似乎还没有为情节提要设置入口点。将您要显示的第一个场景设置为Initial View Controller

【讨论】:

太棒了,这解决了第一个场景问题,对吧?如果我不将情节提要用于场景,我将如何以编程方式设置此属性? 如果您不使用情节提要,则无需设置任何内容,因为您正在手动加载视图控制器。 那为什么只是黑屏呢?因为我搞砸了启动屏幕部分? 可能是因为您将根视图控制器设置为普通的 UIViewController。尝试返回您想要返回的视图控制器的实例。 哎呀,这是我调试黑屏时的测试。把它改回 MapViewController.init() 什么都不做【参考方案3】:

当然,这个答案有点晚了。 ;-) 遇到了一些问题,但我偶然发现了一个安静简单的解决方案,使用应用程序自动创建的 Launch Screen.storyboard。

打开应用程序设置,然后打开应用程序图标和启动图像

在 DropDown-List 中选择 Launch Screen.storyboard,即使您认为这已被选中。选择后屏幕显示不会改变。但是重新启动项目时,会显示启动屏幕!

顺便说一句,为了测试这个整洁,你可以在最后一行设置一个断点 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)

【讨论】:

【参考方案4】:

在这里尝试了所有其他答案后,我终于删除了 LaunchScreen.Storyboard 文件并创建了一个新文件。这是为我解决问题的唯一方法。

【讨论】:

这解决了我的问题。谢谢【参考方案5】:

启动屏幕也有同样的问题。正如 Abizern 中提到的,不允许使用 ViewController。如果你有一个,只删除这个有时是不够的。 LaunchScreen 文件仍可能与不再可用的 ViewController 有一些连接。这也是个问题。

我的解决方法:

    为 LaunchScreen 删除 ViewController 已删除 LaunchScreen.storyboard 中的连接 从设备中删除了应用程序 重新安装

-> 工作:)

【讨论】:

【参考方案6】:

您缺少的是启动屏幕是静态的!它不需要控制器或任何东西。控制器不会做任何事情。对于启动屏幕,您只能使用界面构建器来设计 UI,而不是通过代码。

Xcode 通常会告诉您,如果您尝试在启动屏幕视图上设置自定义控制器,则会导致错误。

【讨论】:

那么我是否应该从该故事板中删除视图控制器并只拥有一个独立的故事板? Xcode 会管理它吗? @Edmund 您需要一个用于启动屏幕的静态故事板和一个用于您的应用程序的故事板,您可以在其中将视图连接到您的控制器和插座以及所有疯狂的东西【参考方案7】:

因此,删除 LaunchScreen.storyboard + LaunchScreenViewController.swift 文件并添加 Launch Screen.xib 文件可以修复启动屏幕。这对我来说很有意义,因为启动屏幕应该是静态的,而不是使用代码。

但是在启动屏幕后视图仍然是黑色的。我会为此提出另一个 SO 问题。

【讨论】:

不需要 LaunchScreenViewController。它没有被使用。启动屏幕的故事板只能包含您放置在其上的对象和布局约束。不执行任何代码。您只需要一个简单的 Launch 故事板。我怀疑您的问题出在其他地方,而您只是通过从情节提要转移到 xib 来解决它。【参考方案8】:

我知道已经很晚了,但我想分享一下我是如何修复它的,如果您正在检查真实设备,请尝试先删除应用程序,重新启动手机,然后重新安装应用程序。如果您已按照清除缓存和 Target - General Tab 等中的设置等所有步骤进行操作,它将得到修复。

【讨论】:

【参考方案9】:

在我的例子中,项目导航器文件过滤器设置为“最近”。请参阅 Xcode 的左下角。我取消了最近的选择,文件出现了。

【讨论】:

【参考方案10】:

最简单的解决方案是在模拟器中测试时卸载并重新安装应用程序。无需删除并重新创建LaunchScreen.Storyboard

【讨论】:

以上是关于Xcode:LaunchScreen.storyboard 未显示的主要内容,如果未能解决你的问题,请参考以下文章

XCode 5 和 XCode 5.1 并排

Xcode 4.6 和 Xcode 5 一起安装

使用 xcode 10 后 Xcode 9 找不到资产

我是不是需要卸载 Xcode 4 才能安装 Xcode 5?

xcode 如何编译

Xcode 无法启动,卡在“正在验证“Xcode”...”