ナビゲーションバーのボタンをカスタマイズしたけどなぜかイベントが発生しないとき
iOSアプリでのナビゲーションバーのボタンのデザインのカスタマイズについて、少しハマってしまったので備忘録として。
ナビゲーションバーの右にデザインをカスタマイズした「保存」ボタンを置きたいという状況が発生しました。
ナビゲーションバーのボタンのカスタマイズについては他のサイトにもたくさん情報があります。それらをもとに、以下のようなコードを書きました。
//保存ボタンの追加 UIBarButtonItem *btnSave = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(respondToBtnSave:)]; UIButton *btnSaveView = [HeaderBtnUtil createHeaderBtnView:@"save"]; [btnSave setCustomView:btnSaveView]; self.navigationItem.rightBarButtonItem = btnSave;
今回の例は、別で生成したUIButtonのデザイン("createHeaderBtnView"で設定しています)をナビゲーションバーのボタンのデザインに設定するというものです。
ポイントは"setCutomView"。たったこれだけ。これで大丈夫かな、、、と思ったのですが、デザインは反映されましたがボタンがなぜか効かない。正解は、
//保存ボタンの追加 UIBarButtonItem *btnSave = [[UIBarButtonItem alloc] init]; UIButton *btnSaveView = [HeaderBtnUtil createHeaderBtnView:@"save"]; [btnSaveView addTarget:self action:@selector(respondToBtnSave:) forControlEvents:UIControlEventTouchUpInside]; [btnSave setCustomView:btnSaveView]; self.navigationItem.rightBarButtonItem = btnSave;
でした。
つまり"setCutomView"で設定したビューにイベントを設定してあげなくてはいけなかったようです。