有没有办法在 Xcode Storyboard 属性检查器中使用 plist 文件字符串?

Posted

技术标签:

【中文标题】有没有办法在 Xcode Storyboard 属性检查器中使用 plist 文件字符串?【英文标题】:Is there a way to use plist file strings in the Xcode Storyboard Attribtutes inspector? 【发布时间】:2020-09-23 21:10:40 【问题描述】:

我发现我必须为 segue 标识符声明相同的字符串值两次:

    曾经在我的 prepare() 存根中处理 segue 逻辑的代码 在检查器中设置故事板中的 segue ID

显然,这会引发许多潜在的拼写错误问题以及两个字符串值之间的问题。

如果可能的话,我想做的是在 plist 文件中定义一次我的 segue ID,然后在上面列出的两个地方引用相同的定义两次。当然我知道可以在 Swift 中引用 plist 值,但在 Storyboard 属性检查器中这可能吗?

【问题讨论】:

【参考方案1】:

我认为这是不可能的,但我有两种选择:

    使用R.swift 之类的内容。此工具将解析您的 Storyboard 并创建可在代码中使用的常量

    不要通过标识符来识别segue,而是通过其目标控制器来识别。

例子:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    if let controller = segue.destination as? MyViewController 
      controller.value = self.value
    

我个人使用数字2,我很少阅读segue的name属性

【讨论】:

谢谢,您的第二个提案听起来是最好的前进道路。不过,在我看来,这确实有点像苹果公司的疏忽。 这个 API 是在 Objective-C 中创建的,它的类型检查不那么严格,所以比较字符串更有意义。您还可以使用它来区分两个 segue,以查看具有相同类但具有不同操作或其他内容的控制器。

以上是关于有没有办法在 Xcode Storyboard 属性检查器中使用 plist 文件字符串?的主要内容,如果未能解决你的问题,请参考以下文章

重用复杂的自定义UI元素 - Xcode Storyboard

Xcode 10 Storyboard 非常慢到没有响应的地步

有没有办法以编程方式对 LaunchScreen 进行编码

Xcode 5 iOS 7 Simulator 没有加载 Storyboard 让我抓狂! (没有本地化)

为什么Xcode不能识别Main.storyboard?

在 Xcode 13 中将标签/按钮从 StoryBoard 连接到 ContentView