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

Swift:Pop Up Button触发NSInternalInconsistencyException异常原因及解决

UIMenu崩溃问题:Menu does not have a valid element for default selection

崩溃原因

这个断言失败的核心原因是UIMenu(对应你的Pop Up Button)必须指定一个初始默认选中的菜单项。系统在初始化菜单的选中状态时,找不到符合要求的默认选中元素,触发了内部一致性检查的断言,直接导致应用崩溃。

修复方案

方案1:通过Interface Builder(可视化界面)设置

  • 打开包含该Pop Up Button的Storyboard/XIB文件
  • 选中你的Pop Up Button,切换到「Attributes Inspector」(属性检查器)
  • 在「Menu」区域的菜单项列表中,找到你想设为默认选中的那一项,勾选它的「Selected」复选框即可

方案2:通过代码动态设置(适合菜单由代码创建的场景)

在创建菜单的UIAction时,给默认选中的项指定state: .on状态,示例代码如下:

// 创建默认选中的菜单项
let defaultAction = UIAction(title: "默认选项", state: .on) { [weak self] _ in
    self?.onLanguageSelected(nil)
}
// 创建其他菜单项
let otherAction = UIAction(title: "其他选项") { [weak self] _ in
    self?.onLanguageSelected(nil)
}
// 组装菜单并赋值给Pop Up Button
let menu = UIMenu(title: "", children: [defaultAction, otherAction])
yourPopUpButton.menu = menu

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:01:43