我是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 –
哦,是的,我將需要拿起原來的風格。 –