swift - 二级菜单 NSView 链接 NSMenuItem 问题
问题描述
一级菜单和二级菜单通过NSmenuItem的title调用数组一一匹配,一级菜单也能正常显示数据。但是一旦二级菜单进入NSView,只有第一项会显示数据,其余都是空白,尝试了很多方法,都没有成功,请指导我,如何处理?
更新方法:
func updateData() {
for city in cites {
let airQualityApi = AirQualityApi()
airQualityApi.fetchData(query: city, success: {airQuality in
if let airQualityMenyItem = self.statusMenu.item(withTitle: city){
airQualityMenyItem.title = airQuality.description
self.airQualityDetailView.update(airQuality: airQuality)
}
})
}
}
秒级 NSView 更新方法:
func update(airQuality: AirQuality) {
DispatchQueue.main.sync {
self.cityName.stringValue = airQuality.city
self.airQuality.intValue = Int32(airQuality.aqi)
}
}
添加 NSMenuItem:
override func awakeFromNib() {
updateData()
let icon = NSImage(named: "icon")
icon?.isTemplate = true
if let button = statusItem.button {
button.image = icon
}
statusItem.menu = statusMenu
//let editMenuItem = NSMenuItem()
//editMenuItem.title = "showAqi"
for i in 0 ... cites.count - 1 {
let mainMenu = NSMenuItem(title: cites[i], action: .none, keyEquivalent: "")
statusMenu.insertItem(mainMenu, at: i)
let sub = NSMenu()
let subMenu = NSMenuItem(title: mainMenu.title, action: .none, keyEquivalent: "")
subMenu.view = airQualityDetailView
//print(subMenu.title)
statusMenu.setSubmenu(sub, for: mainMenu)
sub.addItem(subMenu)
//sub.insertItem(subMenu, at: 0)
}
}
你可以在这里看到完整的代码 GitHub上的整个项目代码
非常感谢你
解决方案
推荐阅读
- c# - RABBITMQ C# 在控制台上运行良好,但不适用于服务
- c - 函数“池”的隐式声明在 C99 中无效
- python - 即使我可以将绘图保存为 png 文件,matplotlib 绘图也不会显示
- node.js - 即使查询遵循文档,Elasticsearch 也会引发有关格式错误的通配符查询的错误
- c# - String.Join 和/或 Enumerable.Aggregate
EntityFramework 中的支持 - javascript - 从 html 表中删除下拉列表
- azure - 是否可以使用 1 个输出绑定在 cosmosDB 中创建 2 个或更多文档
- javascript - JS console.log() 显示我的函数遍历了所有 if 语句,但被操作的元素没有改变
- javascript - 从 JavaScript 对象中递归删除空值
- c++ - 如果 I/O read() 处于阻塞阶段,如何使用 Ctrl+C 退出 C++ 程序?