2016-01-22 25 views
2

我已經寫在SWIFT的OS X應用程序下面的代碼,代碼工作正常(NSComboBox是選擇能夠只,不可編輯)如何知道哪些NSCombobox選擇調用委託

我有這兩個IBOutlet中projNewProjTypeprojNewRouter,當我改變的任一NSComboBox的選擇,我可以看到正確的選擇的指數值和字符串值,但如何檢查返回的指數值是projNewProjTypeprojNewRoutercomboBoxSelectionDidChange()

import Cocoa 
class NewProjectSetup: NSViewController, NSComboBoxDelegate { 
    let comboxProjValue: [String] = [「No」,」Yes」] 
    let comboxRouterValue: [String] = ["No","Yes"] 

    @IBOutlet weak var projNewProjType: NSComboBox! 
    @IBOutlet weak var projNewRouter: NSComboBox! 


    @IBAction func btnAddNewProject(sender: AnyObject) { 
    print(「Add New Button Pressed!」) 
    } 

    @IBAction func btnCancel(sender: AnyObject) { 
    self.dismissViewController(self) 
    } 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    addComboxValue(comboxProjValue,projNewProjType) 
    addComboxValue(comboxRouterValue,projNewRouter) 

    self.projNewProjType.selectItemAtIndex(0) 
    self.projNewRouter.selectItemAtIndex(0) 

    self.projNewProjType.delegate = self 
    self.projNewRouter.delegate = self 
    } 


    func comboBoxSelectionDidChange(notification: NSNotification) { 
    let comboBox: NSComboBox = (notification.object as? NSComboBox)! 

    print("comboBox comboBox: \(comboBox)") 
    /* This printed 「<NSComboBox: 0x6000001e1a00>」*/ 

    print("comboBox objectValueOfSelectedItem: \(comboBox.objectValueOfSelectedItem)") 
    /* This printed the correct selected String value */ 

    print("comboBox indexOfSelectedItem: \(comboBox.indexOfSelectedItem)") 
    /* This printed the correct selected Index value */   
    } 

    /* Add value to Combo box */ 
    func addComboxValue(myVal:[String],myObj:AnyObject){ 
    let myValno: Int = myVal.count 
    for i in 0..<myValno{ 
     myObj.addItemWithObjectValue(myVal[i]) 
    } 
    } 
} 

回答

2

您可以設置標識符在IB您NSComboBoxes。選擇您的組合框並選擇身份檢查員和姓名標識符。然後,你可以這樣做:

if comboBox.identifier == "someIdentifier" { 
    // Do something 
} 
+0

Ooop!我不好。我將我的標識符設置爲「可訪問性」部分下的錯誤部分,這就是爲什麼當我嘗試打印.identifier時爲什麼會看到奇怪的字符串[_NS:179]。在我更正它並將其置於Identity部分之後,現在我可以使用.identifier來檢查選擇器。謝謝 –

3

你已經知道添加你的兩個NSComboBox網點resses,你知道的NSComboBox引起的通知觸發地址,那麼爲什麼不這樣做:

func comboBoxSelectionDidChange(notification: NSNotification) { 
    let comboBox: NSComboBox = (notification.object as? NSComboBox)! 

    if comboBox == self.projNewProjType 
    { 
     print("selection changed via self.projNewProjType") 
    } 
    if comboBox == self.projNewRouter 
    { 
     print("selection changed via self.projNewRouter") 
    } 
相關問題