NSPopupButton
— это контейнер для набора NSMenuItem
объектов, поэтому для добавления элемента можно использовать
func addItemWithTitle(_ title: String!)
NSMenuItem
создается для вас вызовом.
и, если вы захотите начать с нуля, вы можете использовать
func removeAllItems()
Для очистки существующих элементов от кнопки.
Существуют также другие методы вокруг перемещения и удаления пунктов меню с кнопки.
NSPopupButton
— это 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
на кнопку.
person
Warren Burton
schedule
24.05.2015