質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.99%

サイドメニューのあるアプリの設計方針

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 197

yyokii

score 33

前提

  • iOSアプリ
  • ネイティブアプリ

実現したいこと

仕様

  • タブバーを持ち、タブのアイテム数は3つです
  • タブバーのルートになる各画面はナビゲーションバーを持ちます
  • ナビゲーションバーにはサイドメニューを表示するボタンがあります
  • サイドメニューは各タブ画面のトップには必ず付いています
  • サイドメニューに表示するコンテンツは共通です

図にすると下記のようになります。

画面仕様イメージ

また、サイドメニューを実装するに当たってはContainer Viewを使用し下記のように作成するつもりです。

サイドメニュー実装

出典: 『iOS アプリ開発 - UI 実装であると嬉し いレシピブック 少しの工夫とアイデアでできる表現集 Just1factory  著』

相談内容

みなさんであればどうするのかお聞きしたいです。

サイドメニューを各画面で表示するという上述の仕様を満たすために、各タブのルート画面となるViewControllerにて
サイドメニューの実装(= Container Viewを使用しての実装)をしようと思っております。
ただこの場合、サイドメニューとして表示するコンテンツは同じものなのに、各画面でサイドメニューのUIを実装することになってしまいます。

可能であれば、サイドメニューを1つ作成し、それを各画面から呼び出せると構成は綺麗なのかなと思いました。

後者のような実装は可能でしょうか?(windowに貼り付ければ良い?)
それとも前者のように、各画面で実装するのがベターなのでしょうか?

みなさまであればどのようにされるのか伺ってみたく投稿させて頂きました。
些細なことでもご返答頂けますと幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • gentaro

    2019/07/29 22:43

    皆さんであればどうするか、という問いかけは解決策の丸投げに見えてしまうので、現在の設計方針で判明している問題点(困っていること)についての解決策(調べたけどわからないこと)を質問する、というスタンスの方が良いと思います。

    キャンセル

  • fuzzball

    2019/07/30 09:42

    そのサイドメニューのViewを共用するだけの話ではないのですか?(それが可能かどうかを聞いてる?)

    キャンセル

  • yyokii

    2019/07/30 14:29

    viewのインスタンスはシングルトンを利用して共有するつもりです。
    インスタンスは共有するにしても、各タブ画面のルート画面ではコンテナビューを利用してサイドメニューを組み込む必要があります。
    サイドメニューは共通のViewなのでコンテナビューを各タブで作成せずにそこも共通化できればいいなと思った次第です。

    分かり辛い説明ですみません。。

    キャンセル

回答 2

checkベストアンサー

+1

ベースとなる画面に2つのコンテナービューがあり、
一つがサイドバー用のビューコントローラー、
もう一つが「コンテンツ」ではなく、「ナビゲーション+タブの付いたビューコントローラー」にすれば悩みは解決しますかね?¥

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

方針としては

・ベースとなる画面に2つのコンテナービューを作成する
・1つをサイドバー用のビューコントローラーとする
・1つをタブビューコントローラーとする
となります

takabosoftさんのご指摘内容と同じです。
下記URLが詳しいです。

https://fluffy.es/twitter-slide-menu-1/

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる