UITabBarControllerのタブが押されたらmodalでViewControllerを表示する簡単な方法

UITabBarControllerのタブが押されたらmodalでViewControllerを表示する簡単な方法

こんにちは。imagineです。

最近筋トレをはじめました。理由はこの記事。

完全初心者がプログラミング勉強を継続するには、筋トレが大切

半年後に少しマッチョなプログラマになるために頑張ってみます。

さて、今回はUITabBarControllerのタブが押されたらmodalでViewControllerを表示する簡単な方法をメモしておきます。

Instagramのタブバーにある真ん中のボタンって押すと他のボタンと違ってモーダルで表示されますよね。

今つくってるアプリの過程でそれを実装しようと思ったら思いの外めちゃくちゃ簡単にできました。

手順

  1. UITabBarControllerで最初に表示されるViewController内のviewDidLoadをいじる
  2. AppDelegate.swiftにプロトコルを追加
  3. フェイク用のViewControllerを作成
  4. Storyboardで実際に遷移したい画面のViewControllerにIDを設定しておく
  5. AppDelegate.swift内に指定のタブが押された時に遷移する動作を記述


①UITabBarControllerで最初に表示されるViewController内のviewDidLoadをいじる

viewDidLoad内に以下を記述します。

これでtabBarControllerからのイベントをapplication delegate内で扱えるようになりました。

それではAppDelegate.swiftをいじっていきます。

AppDelegate.swiftにプロトコルを追加

一番上のほうの

って書いてあるところに, UITabBarControllerDelegate を書き足します。

こんな感じです。

③フェイク用のViewControllerを作成

今回はFakeViewControllerという名前で作成しました。

このFakeViewController(右の空っぽのViewController)はフェイクですので特に何もしませんが、いつもの通りCocoaTouchClassファイルを作成して、紐づけておいてください。

あと、ボタンはそのまま表示されるので設定しておくべきです。

④Storyboardで実際に遷移したい画面のViewControllerにIDを設定しておく

先ほど作成したのは実際には表示されない画面でしたが、次に実際に表示する画面を作成し、Storyboard IDを設定しておきます。

このIDに紐づける形で画面が遷移します。

今回はnewPostというIDを指定しておきました。

③AppDelegate.swift内に指定のタブが押された時に遷移する動作を記述

最後にボタンが押された際の動作を記述していきます。

FakeViewControllerやpostIDを同じように設定していれば下記のコピペで正常に動くと思います。

違う指定をしている場合はFakeViewControllerとpostIDの部分をご自身の設定に合わせてみてください。

この記述によって、タブバーの押されたボタンがフェイクのものだった場合はnewPostで指定しているViewControllerをmodalで表示する指示をしたあとにfalse(タブバーコントローラーとして遷移させない)を返します。

逆にフェイクではないタブを押した場合はtrueが返され、通常のtabBarControllerの動きをします。

以上です。

ではまた。アビアント!

imagine



 

プログラミングカテゴリの最新記事