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

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

新規登録して質問してみよう
ただいま回答率
85.35%
TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

0回答

932閲覧

スクロールビューにストーリーボード上の他のViewを表示出来ないか

sta_sato

総合スコア2

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2021/02/09 14:51

前提・実現したいこと

横ScrollViewの中に複数のTableViewを持つような画面を作成したいです。

ScrollViewに表示したいTableViewは、ScrollViewとは別のViewController内のViewの配下に
作成済の状態です。
ScrollViewに、このViewController内のView内にある、TableViewを複数表示させたいです。

「ScrollViewの中に複数TableViewを持つような画面を作成したい」の実現方法は色々あると思うのですが、
当初、ViewControllerごとにTableView間をセグエで画面遷移する方針で作成していたのですが、
方針を変え、ScrollViewでTableViewを1画面で表示するよう方針を切り替えました。

そのため当初の方針で作成していた、ViewControllerにいるTableViewを、
ScrollViewにViewごと表示出来ないかと考えています。
(出来ない場合は、ScrollView内に複数Viewを作成して、Viewの配下にTableViewを配置しようと考えています)

発生している問題・エラーメッセージ

上記の実現を下記の手順で実施しようと思い、実装してみましたが、
ビルドすると、TableVIewだけが表示され、TableView内のTableViewCellが表示されません。

(1)ストーリーボード上で、TableViewを作成しているViewControllerに、identifierを設定
(2)ストーリーボードのViewControllerのインスタンス化
(3)インスタンス化したViewController内のViewを、ScrollViewに、addSubviewして表示

該当のソースコード

swift

1 let storyboard = UIStoryboard(name: "Main", bundle: nil) 2 let mainVC1 = storyboard.instantiateViewController(identifier: "Main1") as! CabinViewController 3 let mainVC2 = storyboard.instantiateViewController(identifier: "Main2") as! TestViewController 4 let mainVC3 = storyboard.instantiateViewController(identifier: "Main3") as! SeasoningViewController 5 6 let menu1 = mainVC1.view 7 let menu2 = mainVC2.view 8 let menu3 = mainVC3.view 9 10 self.scrollView.addSubview(menu1!) 11 self.scrollView.addSubview(menu2!) 12 self.scrollView.addSubview(menu3!)

教えていただきたいこと

①VIewを取得して表示した場合、取れるものと取れないものがある理由
(上記の方法だと、Viewの直下のTableViewまでは取れるが、TableViewの直下(孫)のTableViewCellまでは取れない?)

②(オプション)一般的なScrollViewの実装方法
ストーリーボード上でScrollView内の複数のViewを編集しようとすると、
Viewが増えるだけストーリーボード上の作業領域が狭くなるので、
細かなレイアウト調整が難しいと感じました。
一般的には、ScrollViewはコードで実装するのがよいのでしょうか?

補足情報(FW/ツールのバージョンなど)

Swift5

諸々素人質問で申し訳ないのですが、よろしくお願いします。

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

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

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

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

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

hoshi-takanori

2021/02/09 21:08 編集

そもそもどういう画面を作りたいのでしょうか? UITableView を横に並べて切り替えたいと言うことでしたら、そのためのライブラリは色々ありますので、探してみてはいかがでしょうか。 https://teratail.com/questions/241221 自分で実装することもできますが、ある UIViewController の中に別の UIViewController に属する view を埋め込むには、単純に addSubview すればいいというものではありません。 https://yukimasablog.com/show-uiviewcontroller
sta_sato

2021/02/12 01:53

ご返信ありがとうございます。ご回答遅くなり申し訳ありません。 実装したいこととしては、添付いただいたライブラリのイメージとおり、横スクロールできるメニューに、それぞれtableViewを置きたいです。 今回は下記のHMSegmentというライブラリを使って実装していたいるのですが、このライブラリを使うと、スクロールViewの中に複数Viewを置く設計前提になっていると理解しています。 https://github.com/HeshamMegid/HMSegmentedControl スクロールViewの中に置く複数Viewに、ストーリーボード上で別の画面で作成したViewを載せる方法がないか、という質問でした。
hoshi-takanori

2021/02/12 06:13

自分が見た限りでは、HMSegmentedControl は上部のタブの部分だけで、実際にビューを切り替える機能はなさそうに見えますね。 「別の画面で作成したViewを載せる方法」については https://yukimasablog.com/show-uiviewcontroller が参考になるのではないかと思って紹介したのですが、そもそも view と view controller の違いはご存知でしょうか?
sta_sato

2021/02/14 08:52

たびたび返信遅くなり申し訳ありません。解決しました。 Viewの親子関係が定義出来ていなかったことが原因と認識しています。 >>そもそも view と view controller の違いはご存知でしょうか? Viewcontroller:Viewを管理するクラス View:ViewControllerに管理される、画面内のオブジェクトのクラス という理解をしているのですが、あっていますでしょうか。 ですので、ViewControllerをインスタンス化して、ViewControllerで管理しているViewを抜き出して(ViewController.View)、表示したいView(今回でいえばScrollView)との親子関係を作った上で追加してあげればよい、ということだと理解しました。 頓珍漢なことを言っていたらすみません。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問