やり方は色々あると思いますが一般的/汎用的なものを紹介します。
Swift3から始めたのでSwift2はわかりません。エラーなどでたら適宜書き替えてください
まず、OpenFormメニューアイテムにtagを設定します。一意的なものにしてください。
今回は85216
を設定したとしましょう。
ViewControllerにいくつかの処理を追加します
- Bool型変数 openFormEnabled の追加
- Button1, Button2のアクションの追加
- validateMenuItem(menuItem:)のオーバーライド
各アクションはストーリーボードで接続してください。
追加部分のみ記載します
swift
1
2class ViewController: NSViewController {
3
4 private var openFormEnabled: Bool = false
5
6 // Button1のアクション
7 @IBAction func enableOpenForm(sender: AnyObject?) {
8 openFormEnabled = true
9 }
10
11 // Button2のアクション
12 @IBAction func disableOpenForm(sender: AnyObject?) {
13 openFormEnabled = false
14 }
15
16 // これは必須ではありませんが、こうすることでエンバグの可能性を減らせます。
17 private enum MenuItemTag: Int {
18 case openForm = 85216
19 }
20
21 override func validateMenuItem(menuItem: NSMenuItem) -> Bool {
22
23 if let tag = MenuItemTag(rawValue: menuItem.tag) {
24 switch tag {
25 case .openForm: return openFormEnabled
26 }
27 }
28
29 // 単純にこれでもいいです
30// if menuItem.tag == 85216 {
31// return openFormEnabled
32// }
33
34 return false
35 }
36}
全体的な処理の流れ
0. Button1がクリックされたらopenFormEnabledをtrueにする
0. Button2がクリックされたらopenFormEnabledをfalseにする
0. openFormEnabledに応じてメニューアイテムの有効/無効を変更する
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。