2016-01-22 70 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") 
    } 
相关问题