启动屏幕可能无法设置自定义类名

Posted

技术标签:

【中文标题】启动屏幕可能无法设置自定义类名【英文标题】: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? 【参考方案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。


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

【讨论】:

以上是关于启动屏幕可能无法设置自定义类名的主要内容,如果未能解决你的问题,请参考以下文章

Java:简述Java中的自定义异常

类 封装

自定义SpringBoot+Swagger中@ApiModel默认名称

在Angular中的ngClass中绑定自定义类

自定义classLoader

android xml引用不到自定义的view类。 类名包名都正确。