Xcode_OSX/Swift_NSPopUpButton.
Я невероятно новичок в этом, поэтому, пожалуйста, имейте это в виду!
Я был на этом всю ночь, смотрел бесчисленные видео / часто посещаемые форумы...Я не могу найти ни одного ответа!
Я пытаюсь сделать простое всплывающее меню в Swift/OSX, что мне нужно выяснить это:
- Как я могу добавить больше, чем "три пункта" в это меню
- Независимо от того, что выбрано во всплывающем окне, для этой информации, чтобы отправить целое значение на другой номер.
Я очень признателен за вашу помощь, спасибо.
1 ответ
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
объекты в кнопку.