内容
NavigationBarにUIBarButtonItemを設定しています。
ナビゲーションバーにある、1つのボタンの色だけをアクションのタイミングで変更する方法はありますでしょうか。
具体的には、下の画像でいうと③ボタンを押した時に、③ボタンの色だけ変更し、
さらにもう一度③ボタンを押すと元の色に戻るといったことをしたいです。
ナビゲーションバーにある全アイテムの色を変更する方法はわかるのですが、1つのボタンだけ変更する方法が見つかりませんでした。
self.navigationController?.navigationBar.tintColor = UIColor.red
良いやり方をご存じの方がいらっしゃいましたら、ご教示のほどお願い申し上げます。
コード
// ボタン①
let ① : UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 22, height: 22))
①.setImage(UIImage(named: "image_①")?.withRenderingMode(UIImage.RenderingMode.alwaysTemplate), for: .normal)
①.addTarget(vc, action: #selector(ViewController.btnNaviTapped①(sender:)), for: .touchUpInside)
btnNavi① = UIBarButtonItem(customView: ①)
// ボタン②
let ② : UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 22, height: 22))
②.setImage(UIImage(named: "image_②")?.withRenderingMode(UIImage.RenderingMode.alwaysTemplate), for: .normal)
②.addTarget(vc, action: #selector(ViewController.btnNaviTapped②(sender:)), for: .touchUpInside)
btnNavi② = UIBarButtonItem(customView: ②)
// ボタン③
let ③ : UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 22, height: 22))
③.setImage(UIImage(named: "image_③")?.withRenderingMode(UIImage.RenderingMode.alwaysTemplate), for: .normal)
③.addTarget(vc, action: #selector(ViewController.btnNaviTapped③(sender:)), for: .touchUpInside)
btnNavi③ = UIBarButtonItem(customView: ③)
// ボタンをナビゲーションバーにセット
navigationItem.rightBarButtonItems = [ btnNavi③ , btnNavi②]
navigationItem.leftBarButtonItems = [btnNavi①]
// アイテム色を変更
self.navigationController?.navigationBar.tintColor = UIColor.white
// バーの色を変更
self.navigationController?.navigationBar.barTintColor = NavigationbarColor
補足情報
Xcode:Version 10.2
Swift5
iOS12.2
回答1件
あなたの回答
tips
プレビュー