Swift
Swift4.2

Swift 4.2からBool型を反転させる"toggle"メソッドが追加された

Swift 4.2からBool型を反転させる"Toggle"が追加されたので、紹介したいと思います。

https://developer.apple.com/documentation/swift/bool/2994863-toggle

どういうものかというと、Bool型のtruefalseに、falsetrueにするというものです。

具体的に例を挙げてみます。

Swift
@IBOutlet func onButtonTapped(_ sender: UIButton) {
    sender.isSelected = !sender.isSelected
}

上記のように選択されていないものを選択済みにしたり、その逆で選択されているものを非選択にする、というような時には上記のように書いていました。

Swift 4.2から追加されたtoggle()を使えば以下のように記載することができます。

Swift
@IBOutlet func onButtonTapped(_ sender: UIButton) {
    sender.isSelected.toggle()
}

上記の通りなのですが、プロパティに代入していましたが、メソッドのように実行する形式でBool型を反転することができるようになりました。

toggle()はBool型のメソッドなので、UIStackViewに内包しているオブジェクトのisHiddenの切り替えにも使えます。

Swift
@IBOutlet func onButtonTapped(_ sender: UIButton) {
    self.leftView.isHidden.toggle()
}

isSewlectedからisHiddenに変えただけですが、Bool型であればtoggle()で切り替えることができます。

UIStackViewの中のViewを表示・非表示するサンプルコードをリポジトリで公開しています。

https://github.com/TakashiSawada/ToggleSample.git

UIBarButtonItemをタップするごとにUIStackViewに内包された左右のUIViewの表示・非表示を切り替えることができます。

Swift
@IBAction func onLeftBarButtonItemTapped(_ sender: UIBarButtonItem) {
    self.leftView.isHidden.toggle()
}

@IBAction func onRightBarButtonItemTapped(_ sender: UIBarButtonItem) {
    self.rightView.isHidden.toggle()
}