Swift 4.2からBool型を反転させる"Toggle"が追加されたので、紹介したいと思います。
どういうものかというと、Bool型のtrue
をfalse
に、false
をtrue
にするというものです。
具体的に例を挙げてみます。
@IBOutlet func onButtonTapped(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
}
上記のように選択されていないものを選択済みにしたり、その逆で選択されているものを非選択にする、というような時には上記のように書いていました。
Swift 4.2から追加されたtoggle()
を使えば以下のように記載することができます。
@IBOutlet func onButtonTapped(_ sender: UIButton) {
sender.isSelected.toggle()
}
上記の通りなのですが、プロパティに代入していましたが、メソッドのように実行する形式でBool型を反転することができるようになりました。
toggle()
はBool型のメソッドなので、UIStackView
に内包しているオブジェクトのisHidden
の切り替えにも使えます。
@IBOutlet func onButtonTapped(_ sender: UIButton) {
self.leftView.isHidden.toggle()
}
isSewlected
からisHidden
に変えただけですが、Bool型であればtoggle()
で切り替えることができます。
UIStackView
の中のViewを表示・非表示するサンプルコードをリポジトリで公開しています。
▶https://github.com/takashings/ToggleSample.git

UIBarButtonItem
をタップするごとにUIStackView
に内包された左右のUIView
の表示・非表示を切り替えることができます。
@IBAction func onLeftBarButtonItemTapped(_ sender: UIBarButtonItem) {
self.leftView.isHidden.toggle()
}
@IBAction func onRightBarButtonItemTapped(_ sender: UIBarButtonItem) {
self.rightView.isHidden.toggle()
}