4

OS X アプリ開発は初めてです。私はなんとかNSComboBox(選択可能、編集不可)を構築しました。アクションボタンのクリックでindexOfSelectedItemを取得でき、正常に動作します。

変更時の値を検出する方法は? ユーザーが選択を変更した場合、新しく選択されたインデックスを検出するためにどのような関数を使用する必要がありますか?

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])
    }
}

}

4

1 に答える 1

9

NSComboBoxDelegateプロトコルを実装するコンボボックスのデリゲートを定義してから、comboBoxSelectionDidChange(_:)メソッドを使用する必要があります。

最も簡単な方法は、次のように NewProjectSetup クラスでデリゲートを実装することです。

class NewProjectSetup: NSViewController, NSComboBoxDelegate { ... etc

次に、viewDidLoad に以下も含めます。

self.projNewRouter.delegate = self
// self (ie. NewProjectSetup) implements NSComboBoxDelegate 

そして、次の場所で変更を取得できます。

func comboBoxSelectionDidChange(notification: NSNotification) {
    print("Woohoo, it changed")
}
于 2016-01-22T02:10:51.180 に答える