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()
}