【Swift4】UITabBarController、タブ切り替え時に処理実行

謎のプリン語る。
プログラミングの役立つ情報とか、どうでもいい雑談とか書いてます。
一人書く人増えました。

【Swift4】UITabBarController、タブ切り替え時に処理実行

みやびプリン 500 316

500 320

【Swift4】UITabBarController、タブ切り替え時に処理実行 - サムネイル

※この記事は6年以上前の記事です。
現在は状況が異なる可能性がありますのでご注意ください。

どうも、車で、早速事故りかけたみやびです。
札幌運転難しい・・・。
(いや、落ち着いて運転しろ)

表記の件、
以前、こんな記事を書いたが、

【Swift4】UIViewController、タブ切り替え後戻ってきた時にメソッドを実行する

もっと、根っこからやれる方法を編み出したので、やり方Tipsしようかと。
(UINavigationControllerでも、別のプロパティを使えば同じようにやることができるはず)
今回の記事のやり方なら、
ViewController側で処理を書く必要がなく、
共通の処理を実行することが可能だ。

まず、Swiftの便利な変数の書き方から。
Swiftには、プロパティの値が、セットされたり変化したらブロック内の処理を実行、という便利な書き方がある。

class hoge {

  var hogeValue: Bool {
    get {
      return self.hogeValue
    }
    set {
      self.hogeValue = newValue
    }
  }
}

こうしておけば、hogeValueが変更される度に、setのブロックの処理が実行されるのだ。
では、UITabが切り替わった時に実行させるにはというと、これを応用すればできる。
下記のように定義した、クラスを、ストーリーボードないし、コード内のUITabBarControllerに適用する。

import UIKit

class CustomUITabBarViewController: UITabBarController {

  // 現在のタブが格納されている変数をオーバーライド
  override var selectedViewController: UIViewController? {
    get {
      return super.selectedViewController
    }
    set {
      let value = newValue
      super.selectedViewController = value
      self.tabChange()
    }
  }

  private func tabChange(){
    //様々処理
  }
}

そう、タブが切り替われば、当然ViewControllerを格納している変数は変化する。
その変数をオーバーライドして、処理を追加すればいいのだ。

ただ、UITabBarControllerのタブが切り替わる度に、実行されるコールバック関数を見つけれれば、
当然それを使った方がいい。
しかし、僕は、いくら調べても見つかりませんでした(泣)

して、このやり方なら、他のいろんな面でも応用が効く。
そういう方法を見つけれたのはでかいね。

ではまた。

ありえないほど簡単にホームページができる【Jimdo(ジンドゥー)】 - メイン

トラックバック(0)

トラックバックURL:

コメントする

ページトップへ戻る