【问题标题】:Launch screens may not set custom classnames启动屏幕可能无法设置自定义类名
【发布时间】:2016-10-12 08:40:03
【问题描述】:

我尝试将自定义类添加到我的表格视图单元格中,但添加后出现以下错误:

我经常读到我不能在 LaunchScreen 中使用自定义类,但我没有接触过这个文件。谁能帮我?

这是我对主界面和启动界面的常规设置。

我正在使用 Swift。

【问题讨论】:

  • 尝试清洁构建 Cmd+Option+K。可能是您之前为启动屏幕添加了任何自定义类,并在一段时间后将其删除。
  • @Yash :不,那是行不通的。不允许在 Launch Screen 文件中使用自定义类。与其将此文件视为 VC,不如将其视为静态图像。
  • @Bishal Ghimire 我知道我们不允许这样屏幕截图也显示在帖子中,但它也是一个 xib 文件,所以可能是用户错误添加的自定义类。
  • @Yash 我如何检查?
  • @Yash 如果我点击错误,它总是会打开 Main.storyboard?

标签: ios swift xcode uitableview


【解决方案1】:

我总是有一个单独的初始屏幕,这是第一个视图控制器应用程序加载。

这是您要添加所有业务逻辑或显示微调器/加载器等的文件。

为此,您必须设置项目的部署目标,如图所示。

请注意,您不能将任何其他自定义类添加到LaunchScreen。它是一个仅在应用程序即将启动时显示的 ViewController。在应用程序生命周期的这个阶段,还没有开始任何事情。它几乎类似于静态图像(它曾经只是 iOS7 之前的静态图像)。仅从 iOS9 或 XCode 7 开始,它被更改为故事板,以前它曾经是 XIB 文件。因此,您不能将自定义类对象添加到LaunchScreen,因为这是仍要加载或启动应用程序的阶段。

【讨论】:

  • 它看起来和你的例子一模一样。我没有在 LaunchSreen 文件中添加任何东西。我正在使用 Main.storyboard 而不是 Splash.storyboard。
  • @GuteLaune:是的,您可以使用 Main.Storyboard 添加您的自定义类对象。就像我说的 LaunchScreen 文件就像静态图像。虽然它的加载还没有执行任何代码。因此没有必要添加自定义类对象。将其视为添加了自动布局功能的图像。
  • 我没有在启动屏幕文件中添加代码。我在上面的帖子中添加了一张照片,如果你看到我按照你说的那样做,但我仍然有错误。
【解决方案2】:

转到Main.storyboard 的属性并检查Use as Launch Screen 是否未被选中。好像是你选错了。

【讨论】:

  • 天哪,谢谢伙计,?现在可以正常工作了。我不能为你的帖子投票,因为我没有足够的积分,但我觉得自己被投票了。 ?
【解决方案3】:

转到您的 -> launchScreen.storyboard 然后转到您的 -> 身份和类型 -> 取消选中该框 -> 用作启动屏幕。在 General -> App Icons and Launch images -> Launch Screen File 下拉菜单中更改它 -> LaunchScreen 而不是 launchScreen.storyboard 不会帮助(停止)执行上述操作。确保您的所有约束都正确设置,只需从主故事板复制约束设置即可。

【讨论】:

    【解决方案4】:

    要补充 Yash 的评论,此错误具有误导性。如果您的 ViewController 的自定义类字段为空,那么您还应该检查视图上的每个对象,看看它们的自定义类是否也是空的,您甚至不能为启动页面设置自定义标签。

    这就是我花了一段时间才弄清楚的原因,在我的一个标签上意外地通过剪切 + 粘贴设置了一个自定义类。

    【讨论】:

      【解决方案5】:

      我也犯了同样的错误。

      错误:


      打算做的很可能是这样的:

      正确:

      【讨论】:

        【解决方案6】:

        这个错误有很多原因。

        我收到此错误是因为 launchscreen.storyboard 和 main.storyboard 具有与“viewController.swift”相同的自定义类。

        尝试从 launchscreen.storyboard 中删除自定义类。

        【讨论】:

          【解决方案7】:

          iOS 13 注意:

          在 iOS 13 之前,您拥有两者:

          • Main.storyboard
          • LaunchScreen.storyboard

          从 iOS 13 开始,您默认拥有 SwiftUI。因此,您不再拥有Main.storyboard。你只有LaunchScreen.storyboard

          至于它们的区别见here

          也许和我一样,你只是看到了storyboard这个词就跳了起来,后来意识到你不是在构建Main.storyboard。

          修复很简单,在Paulw11 answer中提到

          为什么会这样?

          这是因为 SwiftUI 在某种程度上弃用了故事板的需求,并倾向于将重点放在使用预览作为 single source of truth


          如果您仍想使用情节提要,那么您要做的就是在创建项目时将“用户界面”设置为“情节提要”:

          【讨论】:

            猜你喜欢
            • 2015-12-28
            • 2019-01-30
            • 2017-05-27
            • 2012-01-26
            • 1970-01-01
            • 2018-04-23
            • 1970-01-01
            • 2015-12-30
            • 1970-01-01
            相关资源
            最近更新 更多