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
相关产品推荐
相关产品推荐

