ios - Xcode 界面生成器 UI 中的字符串是否有替换文本语法?

标签 ios xcode macos interface-builder xib

我有一个用于处理不同应用程序设置的 Objective C++ 程序。有没有办法使用预处理器定义来创建要在 NSTextFieldCell、NSButtonCell 使用的字符串中替换的文本?

例如,不是有一个 NSTextField 说“设置 Foo 的选项”,而是有一个预处理器宏(GCC_PREPROCESSOR_DEFINITIONS):

MY_PROGRAM_NAME=Bar

然后 NSTextField 的文本将是:
"Options for setting up $(MY_PROGRAM_NAME)"

然后会有预期的结果:“设置栏的选项”

注意 1:显然,我可以在代码中以编程方式进行替换。

注意 2:这是针对 Xcode 7 的,所以也许没有这样的功能?

最佳答案

一句话,没有。 Xcode nib 编译器不执行任何类型的变量替换,并且——一旦编码——所有归档的属性值都是静态的。

但是,如果这对您的应用程序来说是一件“事情”,并且没有涉及太多 View 类(例如,只有 NSTextField),那么推出您自己的解决方案并不难。

我会考虑这种方法:

  • 编造一种易于替代的语法,例如“Some string {VAR_NAME}”。
  • 将变量定义为字典中的键/值对。存储
    字典作为应用程序包中的 XML 文件/字典。
  • 在应用程序启动时,加载字典并通过将其放入公开
    全局变量或将其添加到 -[NSUserDefaults registerDefaults:]
  • 子类 NSTextField (举个例子)。覆盖任一-initWithCoder:-awakeFromNib .在覆盖中,获取字符串
    View 对象的值,使用公共(public)扫描它以查找替换
    变量字典,并根据需要更新字符串属性。
  • 在 IB 中,将需要此功能的任何 NSTextField 的类更改为
    您的自定义子类。
  • 关于ios - Xcode 界面生成器 UI 中的字符串是否有替换文本语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48310373/

    相关文章:

    ios - 为什么我的 iPhone 应用程序图标不起作用?

    ios - iOS 10/Xcode 8 设备上的 NSLog 似乎会被截断?为什么?

    macos - 防止 "echo"解释反斜杠转义

    macos - Cocoa Emacs 打印缓冲区

    ios - IONIC 2 - 每次打开应用程序时都会询问地理位置或获得许可

    ios - 如何在 Apple 开发者计划中将角色从成员更改为管理员?

    ios - 如何避免将 REVERSED_CLIENT_ID 硬编码到 iOS Info.plist 中以进行开发/生产 Google 登录?

    iphone - iOS 5 中的协议(protocol)和分配属性

    swift - Xcode 10.2 检测到新的单 View 应用程序中的内存泄漏

    mysql - 在 osX 上设置从 Matlab 到 MySQL 的 JDBC 连接