我对此非常陌生,所以请记住这一点!
我整晚都在这儿,看了无数视频/闹鬼
无数的论坛...我找不到一个答案!
我正在尝试在 Swift/OSX 中制作一个基本的弹出菜单我需要弄清楚的是:
- 如何向此菜单添加“三项”以上的内容
- 无论在弹出窗口中选择什么,该信息都会发送一个整数
值到另一个数字。
我非常感谢您的帮助,谢谢。
A NSPopupButton
是一个容纳一堆的容器NSMenuItem
对象,以便添加您可以使用的项目
func addItemWithTitle(_ title: String!)
The NSMenuItem
通过调用为您构建。
由于您可能希望从头开始,您可以使用
func removeAllItems()
从按钮清除现有项目。
有还有其他方法 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSPopUpButton_Class/index.html从按钮移动和删除菜单项。
A NSPopupButton
is-a NSControl
所以你可以使用var action: Selector
设置选择项目时发送的操作var target: AnyObject!
控制哪个对象接收消息。或者只是将其连接起来Interface Builder
.
protocol FooViewDelegate{
func itemWithIndexWasSelected(value:Int)
}
class FooViewController: NSViewController {
@IBOutlet weak var myPopupButton: NSPopUpButton!
var delegate: FooViewDelegate?
let allTheThings = ["Mother", "Custard", "Axe", "Cactus"]
override func viewDidLoad() {
super.viewDidLoad()
buildMyButton()
}
func buildMyButton() {
myPopupButton.removeAllItems()
myPopupButton.addItemsWithTitles(allTheThings)
myPopupButton.target = self
myPopupButton.action = "myPopUpButtonWasSelected:"
}
@IBAction func myPopUpButtonWasSelected(sender:AnyObject) {
if let menuItem = sender as? NSMenuItem, mindex = find(allTheThings, menuItem.title) {
self.delegate?.itemWithIndexWasSelected(mindex)
}
}
}
所有按钮的构造都可以在Interface Builder
而不是编码。请记住,您可以使用以下命令复制项目CMD-D
或者你可以拖动新的NSMenuItem
对象放入按钮中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)