You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS应用Storyboard中偏好设置菜单显示为Settings的问题求助

macOS Storyboard偏好设置菜单项显示为「Settings…」的原因及解决方法

原因

macOS系统会自动识别标准功能的菜单项(比如偏好设置、关于、退出等),并根据系统语言和预设规则替换显示文本。当你的菜单项关联了系统默认的偏好设置动作(比如绑定了NSPreferencesUsage,或者使用了Cmd+,快捷键),系统会自动覆盖你在Storyboard里设置的标题——英文环境下默认显示「Settings…」,如果项目本地化配置不全或有误,就会出现不符合预期的显示。

解决方法

1. 关闭系统自动标题替换

在Storyboard中选中「Preferences…」菜单项,打开属性检查器,找到Standard Item选项并取消勾选;也可以用代码强制关闭自动替换:

// Swift示例,在应用启动后执行
if let appMenu = NSApp.mainMenu?.items.first,
   let submenu = appMenu.submenu,
   let prefItem = submenu.items[safe: 2] { // 索引对应你的菜单结构:第0个是应用名,第1个分隔符,第2个是偏好设置
    prefItem.usesStandardItemTitle = false
}
// Objective-C示例
NSMenuItem *appMenu = [[NSApp mainMenu] firstObject];
NSMenuItem *prefItem = [[appMenu submenu] objectAtIndex:2];
[prefItem setUsesStandardItemTitle:NO];

2. 检查并修正本地化配置

  • 打开项目的Info.plist,确认已添加对应语言的本地化支持;
  • 找到Storyboard对应的本地化文件(比如Main.strings (Chinese)),检查是否存在对该菜单项标题的错误映射,确保内容为:
    "你的菜单项ID.title" = "Preferences…";
    
    若没有对应条目,直接添加即可。

3. 代码强制设置标题

如果上述方法无效,可在应用启动后手动设置菜单项标题:

// Swift示例
if let appMenu = NSApp.mainMenu?.items.first,
   let submenu = appMenu.submenu,
   let prefItem = submenu.items[safe: 2] {
    prefItem.title = "Preferences…"
    prefItem.usesStandardItemTitle = false
}

内容的提问来源于stack exchange,提问作者johnpurlia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:18:15