我是OS X应用程序开发的新手。我设法建立了NSComboBox(可选择,不可编辑),我可以得到它indexOfSelectedItem在行动按钮点击,工作正常。更改NSComboBox getGet值
如何检测更改的值?当用户改变他们的选择时,我将使用什么样的功能来检测新选定的索引?
我试过使用NSNotification,但没有通过新的更改值,始终是加载时的默认值。这是因为我将postNotificationName放置在错误的位置,或者有其他方法用于获取更改的值?
我试着搜索网络,视频,教程,但主要是为Objective-C编写的。在SWIFT中我无法找到任何答案。
import Cocoa
class NewProjectSetup: NSViewController {
let comboxRouterValue: [String] = ["No","Yes"]
@IBOutlet weak var projNewRouter: NSComboBox!
@IBAction func btnAddNewProject(sender: AnyObject) {
let comBoxID = projNewRouter.indexOfSelectedItem
print(“Combo Box ID is: \(comBoxID)”)
}
@IBAction func btnCancel(sender: AnyObject) {
self.dismissViewController(self)
}
override func viewDidLoad() {
super.viewDidLoad()
addComboxValue(comboxRouterValue,myObj:projNewRouter)
self.projNewRouter.selectItemAtIndex(0)
let notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(
self,
selector: “testNotication:”,
name:"NotificationIdentifier",
object: nil)
NSNotificationCenter.defaultCenter().postNotificationName("NotificationIdentifier", object: projNewRouter.indexOfSelectedItem)
}
func testNotication(notification: NSNotification){
print("Found Combo ID \(notification.object)")
}
func addComboxValue(myVal:[String],myObj:AnyObject){
let myValno: Int = myVal.count
for var i = 0; i < myValno; ++i{
myObj.addItemWithObjectValue(myVal[i])
}
}
}
您需要实现NSComboBoxDelegate并使用方法 'comboB oxSelectionDidChange()'知道弹出列表选择已更改 –
顺便说一句,您应该习惯Swift语法的新循环。对于var循环将不再可用在Swift3中https://github.com/apple/swift-evolution/blob/master/proposals/0007-remove-c-style-for-loops.md –
哦,是的,我将需要拿起原来的风格。 –