イラストレーターみやびの漫画館 作品集 - 月の高いところのロゴマーク

イラスト作品集 月の高いところ

「イラストレーターみやびの漫画館 作品集 - 月の高いところ」とは、自称イラストレーターみやびプリンの、イラストを中心とし、音楽、映像など、総合的にデザイン作品を掲載しているポートフォリオサイトです。 詳しくはこちら>>

今日のプリン言 -謎のプリン語る-

【Swift4】UITabBarController、タブ切り替え時にメソッドを実行

【Swift4】UITabBarController、タブ切り替え時にメソッドを実行 - サムネイル

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

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

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

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

ではまた。

新着情報 NEW