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

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

新規登録して質問してみよう
ただいま回答率
85.37%
iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

2回答

4994閲覧

UISegmentedControlを使ってView Controllerを出し分ける方法がわかりません

tmiyachi

総合スコア47

iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/05/17 10:40

下記2つの画像のように、UISegmentedControlを使って、View Controllerを出し分けるには、storyboardとソースコードでどのように実装すればいいのでしょうか?

かなり検索して調べたのですが、サンプルコードがObjective-Cのものが多く、最新のSwiftのものがございませんでした。

イメージとしては、親ビューとして、View Controllerを置き、そこにSegmentedControlのみを配置。 その後、子ビューとしてTable View Controllerを置きそれぞれのセルの内容を表示する、という感じなのですが、具体的にどのように行えばいいか理解できていません。

イメージ説明

イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

自分で解決したようでよかったです、回答しようとサンプルを作りかけていたので一応載せて起きます。
だいたい同じような感じになっていると思いますが参考まで。

SegmentChangeTable

回答追記

ViewControllerの上に表示されているのはXcode7から加わった新しい機能でExtraViewといいます。
iOS Extra Viewsを使ってみる

基本的にはviewに乗せたものと同じですがhiddenをうまく使うことでviewの出し分けが簡単になりますし、はじめからviewの上に2枚テーブルを乗せていてそれぞれにカスタムセルがあった場合にパーツの位置の調整などがやりにくくなります。

全てをExtra Viewでというのも無理がありますが、使用する場面に応じて使い分けるのが良いと思います。

投稿2016/05/18 10:44

編集2016/05/19 12:43
_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tmiyachi

2016/05/19 02:53

初めまして、サンプルアプリまで作成いただきありがとうございます! storyboardとソースコードをすべて拝見して、大変勉強になりました。 一点、ご質問させていただいてもよろしいでしょうか? https://gyazo.com/a986ccd68e45a79804ea103284741aec の部分で、 VCのデフォルトのViewにTable Base Viewをのせて、それとは別にFirst ViewとSecond ViewがありそれをViewController.swiftでアウトレット接続されていますが、 First ViewとSecond Viewはどのようなやり方をすれば、VCのデフォルトのViewの上に載せずに、VCの中に含めることができるのでしょうか?
_Kentarou

2016/05/19 04:22

Tableviewを直接IBOutletしたものをプロジェクトのなかに追加しました。 tableViewをViewにのせているのは特に意味はなかったので変更しました。 >First ViewとSecond Viewはどのようなやり方をすれば、VCのデフォルトのViewの上に載せずに、VCの中に含めることができるのでしょうか? こちらはxibで tableviewを定義した場合ということでしょうか?
tmiyachi

2016/05/19 05:17

おっしゃる通りです! オブジェクトライブラリでViewを選択して、それをVCの上に乗せようとすると、VCのViewの上にのってしまいます。 https://gyazo.com/8433a9c5d8a68a7bd786ebe3e4e07763 のように、First ViewとSecond ViewはどのようにすればVCのViewの上に載せるのとは違い、個別にVCに含めることができるのでしょうか?
_Kentarou

2016/05/19 12:43

回答に追記しました、確認してみてください。
tmiyachi

2016/05/20 10:13

ありがとうございます! 初めて知りました、参考になります。
guest

0

selectedSegmentIndexで条件分岐を作り、instantiateViewControllerWithIdentifierでVCのインスタンスの生成をすることでできました

投稿2016/05/18 05:08

tmiyachi

総合スコア47

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問