ios - 在 Swift 中跨多个目标共享 Storyboard

标签 ios swift xcode storyboard targets

我有一个具有两个目标的应用程序,它们具有几乎相同的用户界面和功能(预先付费与 IAP)。因此,他们共享一个 Storyboard。在 Objective-C 中这没有问题。

但是现在我开始使用 Swift 实现新的 View Controller 。我遇到的问题是我需要为我的 Storyboard中实现的自定义 View Controller 指定一个“模块”。

自定义 View Controller 的身份检查器如下所示:

enter image description here

我被迫指定我的目标之一。无论我选择哪个目标,另一个目标都会崩溃并显示如下消息:

2017-01-15 17:26:32.284 TapTyping[85802:15083599] Unknown class _TtC13TapTypingLite19EntryViewController in Interface Builder file.

我如何设置我的共享 Storyboard,以便它可以为两个目标构建(就像在 Objective-C 中那样)?

最佳答案

Awolf,我也有一个具有多个目标的项目,我已经开始逐渐将其从 Objective-C 转换为 Swift。通过大量测试,我发现对于从 Objective-C 扩展到 Swift 的模块,一旦我将类从 Objective-C 名称更改为 Swift 名称,我也会遇到此错误“Interface Builder File 中的未知类 XXX” 。我通过反复试验发现,必须为带有 Swift 文件的 View / TableView 指定模块,否则将找不到它们。对于具有 Objective-C 文件的 View / TableView ,模块需要为空,否则将找不到它们。我通过按住 Control 键单击 MainStoryboard.storyboard 并选择“打开方式”、“源代码”,对原始 XML 源代码进行了这些更改。我的命名约定是,转换为 swift 的文件以“ProjectOrganizer”开头,而仍然是 Objective-C 的模块以“StatusReport”开头。以下是两个示例:

Objective-C 示例:img

Swift 示例:img

完成原始 XML 源代码的编辑后,您可以通过按住 Control 键并单击 MainStoryBoard.storyboard 并选择“打开方式”、“Interface Builder - Storyboard”来切换回 Interface Builder 的 GUI View 。

如果您解决了模块的 Objective - C 与 Swift 设置,则所有目标都将成功构建,尽管所有 Swift 文件仅被指定为目标之一。确保所有自定义模块设置都设置为同一目标。

[Interface Builder GUI 中的 Swift 示例][3]

[Interface Builder GUI 中的 Objective-C 示例][4]

关于ios - 在 Swift 中跨多个目标共享 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41667019/

相关文章:

ios - AudioKit 的 RenderToFile 无法正常工作

ios - Firebase 找不到 'module <Firebase>'

ios - UIScrollView 滚动缓慢

xcode - 停止 xcode 索引

ios - 如何在 SwiftUI 中提供自定义 ButtonStyle 附加选项

java - iOS椭圆曲线 key 用于Java后端加密解密

ios - 将 NSNumber 保存在 plist 中,不起作用

ios - 如何实现多点触摸同时画两条线?

objective-c - 在 macOS 上,是否可以修改已编译的动态库的符号名称?

c++ - XCode 构建失败 "undefined Symbols for architecture x86_64"