让我们说我有一个Txt文件,应使用以下3个条目读取该文件:
/dev/disk1s1
/dev/disk3s2
/dev/disk4s3
这3个条目中的每个条目都应作为一项“导入”到现有NSPopUpButton中。就我而言,这委派了一个人:
@IBOutlet weak var testmenu: NSPopUpButton!
从上述3条开发线创建动态菜单的下一步是什么?
@El Tomato 好的,阵列正在工作。但是不知道如何在插座中添加“驱动器”。
do {
let file = try String(contentsOfFile: "/tmp/drives")
let drives: [String] = file.components(separatedBy: "\n")
print(drives)
} catch {
Swift.print("Fatal Error: Couldn't read the contents!")
}
答案 0 :(得分:2)
这很简单:
class ViewController: NSViewController {
@IBOutlet weak var popupButton: NSPopUpButton!
override func viewDidLoad() {
super.viewDidLoad()
popupButton.menu?.removeAllItems()
// You should get this from your file
let fileContent = """
/dev/disk1s1
/dev/disk3s2
/dev/disk4s3
"""
for (index, drive) in fileContent.components(separatedBy: "\n").enumerated() {
popupButton.menu?.addItem(withTitle: drive, action: #selector(ViewController.menuItemClicked(_:)), keyEquivalent: "\(index + 1)")
}
}
@objc func menuItemClicked(_ sender: NSMenuItem) {
print("\(sender.title) clicked")
}
}
keyEquivalent
是菜单项的快捷键。如果不需要,请传递一个空字符串。