※この記事は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のタブが切り替わる度に、実行されるコールバック関数を見つけれれば、
当然それを使った方がいい。
しかし、僕は、いくら調べても見つかりませんでした(泣)
して、このやり方なら、他のいろんな面でも応用が効く。
そういう方法を見つけれたのはでかいね。
ではまた。
コメントする