回答編集履歴

2

エラーについて追記

2019/08/03 00:21

投稿

hayabusabusash
hayabusabusash

スコア767

test CHANGED
@@ -108,4 +108,42 @@
108
108
 
109
109
  Storyboard上の特定のViewControllerだけ生成したい場合面倒なので
110
110
 
111
- 1つのStoryboardには1つのViewControllerだけを定義するようにすることをお勧めします。
111
+ 1つのStoryboardには1つのViewControllerだけを定義するようにすることをお勧めします。
112
+
113
+
114
+
115
+ # 追記(2019/08/03)
116
+
117
+ プロジェクトとエラーの記載ありがとうございます!
118
+
119
+
120
+
121
+ まずエラーですが、
122
+
123
+ 以下のようなエラーが出ています。
124
+
125
+
126
+
127
+ > Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'Main' in bundle NSBundle
128
+
129
+
130
+
131
+ `Main`というStoryboard(デフォルトで一番最初に作られるStoryboardですね)が見つからなくて落ちているようです。
132
+
133
+ プロジェクトを確認したところ、Xcodeの設定の**Main Interface**が`Main`になっていました。
134
+
135
+ (**Main Interface**はアプリ起動時に一番最初に表示するViewControllerを設定する項目です)
136
+
137
+
138
+
139
+ ![Xcodeの設定](f40aa230450419d6c34efbbaa943796d.png)
140
+
141
+
142
+
143
+ これを`TabViewController`など自分が表示させたいViewControllerに変えてみたらエラーは解消されると思います。
144
+
145
+
146
+
147
+ 落ちた場合には大概エラーがコンソールに表示されるので、
148
+
149
+ 1度目を通してみることをお勧めします。エラーをそのままコピペして検索すると解決策が出てくるかもしれませんしね。

1

追記に対する回答を追加

2019/08/03 00:21

投稿

hayabusabusash
hayabusabusash

スコア767

test CHANGED
@@ -47,3 +47,65 @@
47
47
  簡単にですが[サンプルプロジェクト](https://github.com/hayabusabusa/TeratailTabmanSample)を作ってみたので、
48
48
 
49
49
  よければ参考にしてみてください。
50
+
51
+
52
+
53
+ # 追記(2019/08/01)
54
+
55
+ レイアウトが反映されない件についてですが、
56
+
57
+ 現状は以下のようにして`viewControllers`に表示したいViewControllerを生成していると思います。
58
+
59
+
60
+
61
+ ```swift
62
+
63
+ private var viewControllers = [ViewController1(),UIViewController2(),UIViewController3()]
64
+
65
+ ```
66
+
67
+
68
+
69
+ これでは`ViewController1`、`UIViewController2`などをStoryboardから生成したことにはなりません。
70
+
71
+
72
+
73
+ Storyboardで作ったレイアウトを反映したViewControllerを生成したい場合、
74
+
75
+ **StoryboardからViewControllerを生成する必要があります。**
76
+
77
+
78
+
79
+ サンプルプロジェクトでは以下のようにしてStoryboardからViewControllerを生成しています。
80
+
81
+ ついでに[参考になりそうなサイト](http://crossbridge-lab.hatenablog.com/entry/2015/12/14/073000)
82
+
83
+
84
+
85
+ ```Swift
86
+
87
+ // Tabmanで表示するViewControllerを生成
88
+
89
+ guard let firstVC = UIStoryboard(name: "FirstViewController", bundle: nil).instantiateInitialViewController(),
90
+
91
+ let secondVC = UIStoryboard(name: "SecondViewController", bundle: nil).instantiateInitialViewController() else {
92
+
93
+ return
94
+
95
+ }
96
+
97
+
98
+
99
+ ```
100
+
101
+
102
+
103
+ 現在は一つのStoryboardに複数のViewControllerを定義しているみたいですが
104
+
105
+
106
+
107
+ 個人的には画面が増えるごとにStoryboardが重くなるのと、
108
+
109
+ Storyboard上の特定のViewControllerだけ生成したい場合面倒なので
110
+
111
+ 1つのStoryboardには1つのViewControllerだけを定義するようにすることをお勧めします。