質問編集履歴
1
情報追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -107,3 +107,99 @@
|
|
107
107
|
|
108
108
|
|
109
109
|
NavigationController配下で自動生成される UIViewController.navigationItemを利用しているのが原因だろうなぁと、薄々感じています。リファレンスにも何かそれらしい事が書いてあるように見えるのですが、google翻訳さんの力を借りても理解できませんでした。
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
## 追記情報です
|
114
|
+
|
115
|
+
比較の為にNavigationControllerを使わないケースの再現方法を追記します。
|
116
|
+
|
117
|
+
### NavigationControllerを使わないケース
|
118
|
+
|
119
|
+
#### storyboard
|
120
|
+
|
121
|
+

|
122
|
+
|
123
|
+
デフォルトのViewControllerにNavigation Bar部品を追加しました。
|
124
|
+
|
125
|
+
UINavigationItemはmyNavigationItemという名前でOutlet接続します。
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
#### ソースコード
|
130
|
+
|
131
|
+
```
|
132
|
+
|
133
|
+
import UIKit
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
class ViewController: UIViewController {
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
@IBOutlet weak var myNavigationItem: UINavigationItem!
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
var okButton: UIBarButtonItem!
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
// NGボタンの初期化
|
150
|
+
|
151
|
+
var ngButton = UIBarButtonItem(title: "NG", style: .plain, target: self, action: #selector(ngButtonTapped(_:)))
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
override func viewDidLoad() {
|
156
|
+
|
157
|
+
super.viewDidLoad()
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
// OKボタンの初期化
|
162
|
+
|
163
|
+
okButton = UIBarButtonItem(title: "OK", style: .plain, target: self, action: #selector(okButtonTapped(_:)))
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
// navigationItemに2つのボタンをセット
|
168
|
+
|
169
|
+
myNavigationItem.rightBarButtonItems = [ngButton, okButton]
|
170
|
+
|
171
|
+
}
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
// OKボタンをタップした時のアクション
|
176
|
+
|
177
|
+
@objc func okButtonTapped(_ sender: UIBarButtonItem) {
|
178
|
+
|
179
|
+
print("OK!")
|
180
|
+
|
181
|
+
}
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
// NGボタンをタップした時のアクション
|
186
|
+
|
187
|
+
@objc func ngButtonTapped(_ sender: UIBarButtonItem) {
|
188
|
+
|
189
|
+
print("NG!")
|
190
|
+
|
191
|
+
}
|
192
|
+
|
193
|
+
}
|
194
|
+
|
195
|
+
```
|
196
|
+
|
197
|
+
### 解説
|
198
|
+
|
199
|
+
前のケースと違うのは、NavigationControllerによって自動生成されたNavigationItemではなく、storyboard上で手動で付加したものを使った事だけです。
|
200
|
+
|
201
|
+
ところが、こちらのケースでは"OK"ボタン"NG"ボタン共に、正しくデバッグ表示されます。
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
なぜ、最初のケースの"NG"ボタンのactionメソッドだけが機能しないのか知りたいです。
|