启动屏幕可能无法设置自定义类名
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。
如果您仍想使用情节提要,那么您要做的就是在创建项目时将“用户界面”设置为“情节提要”:
【讨论】:
以上是关于启动屏幕可能无法设置自定义类名的主要内容,如果未能解决你的问题,请参考以下文章