回答編集履歴
2
エラーについて追記
answer
CHANGED
@@ -53,4 +53,23 @@
|
|
53
53
|
|
54
54
|
個人的には画面が増えるごとにStoryboardが重くなるのと、
|
55
55
|
Storyboard上の特定のViewControllerだけ生成したい場合面倒なので
|
56
|
-
1つのStoryboardには1つのViewControllerだけを定義するようにすることをお勧めします。
|
56
|
+
1つのStoryboardには1つのViewControllerだけを定義するようにすることをお勧めします。
|
57
|
+
|
58
|
+
# 追記(2019/08/03)
|
59
|
+
プロジェクトとエラーの記載ありがとうございます!
|
60
|
+
|
61
|
+
まずエラーですが、
|
62
|
+
以下のようなエラーが出ています。
|
63
|
+
|
64
|
+
> Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'Main' in bundle NSBundle
|
65
|
+
|
66
|
+
`Main`というStoryboard(デフォルトで一番最初に作られるStoryboardですね)が見つからなくて落ちているようです。
|
67
|
+
プロジェクトを確認したところ、Xcodeの設定の**Main Interface**が`Main`になっていました。
|
68
|
+
(**Main Interface**はアプリ起動時に一番最初に表示するViewControllerを設定する項目です)
|
69
|
+
|
70
|
+

|
71
|
+
|
72
|
+
これを`TabViewController`など自分が表示させたいViewControllerに変えてみたらエラーは解消されると思います。
|
73
|
+
|
74
|
+
落ちた場合には大概エラーがコンソールに表示されるので、
|
75
|
+
1度目を通してみることをお勧めします。エラーをそのままコピペして検索すると解決策が出てくるかもしれませんしね。
|
1
追記に対する回答を追加
answer
CHANGED
@@ -22,4 +22,35 @@
|
|
22
22
|
StoryboardからViewControllerを生成するようにしないとStoryboardで作ったレイアウトが反映されないんじゃないかなと思います。
|
23
23
|
|
24
24
|
簡単にですが[サンプルプロジェクト](https://github.com/hayabusabusa/TeratailTabmanSample)を作ってみたので、
|
25
|
-
よければ参考にしてみてください。
|
25
|
+
よければ参考にしてみてください。
|
26
|
+
|
27
|
+
# 追記(2019/08/01)
|
28
|
+
レイアウトが反映されない件についてですが、
|
29
|
+
現状は以下のようにして`viewControllers`に表示したいViewControllerを生成していると思います。
|
30
|
+
|
31
|
+
```swift
|
32
|
+
private var viewControllers = [ViewController1(),UIViewController2(),UIViewController3()]
|
33
|
+
```
|
34
|
+
|
35
|
+
これでは`ViewController1`、`UIViewController2`などをStoryboardから生成したことにはなりません。
|
36
|
+
|
37
|
+
Storyboardで作ったレイアウトを反映したViewControllerを生成したい場合、
|
38
|
+
**StoryboardからViewControllerを生成する必要があります。**
|
39
|
+
|
40
|
+
サンプルプロジェクトでは以下のようにしてStoryboardからViewControllerを生成しています。
|
41
|
+
ついでに[参考になりそうなサイト](http://crossbridge-lab.hatenablog.com/entry/2015/12/14/073000)
|
42
|
+
|
43
|
+
```Swift
|
44
|
+
// Tabmanで表示するViewControllerを生成
|
45
|
+
guard let firstVC = UIStoryboard(name: "FirstViewController", bundle: nil).instantiateInitialViewController(),
|
46
|
+
let secondVC = UIStoryboard(name: "SecondViewController", bundle: nil).instantiateInitialViewController() else {
|
47
|
+
return
|
48
|
+
}
|
49
|
+
|
50
|
+
```
|
51
|
+
|
52
|
+
現在は一つのStoryboardに複数のViewControllerを定義しているみたいですが
|
53
|
+
|
54
|
+
個人的には画面が増えるごとにStoryboardが重くなるのと、
|
55
|
+
Storyboard上の特定のViewControllerだけ生成したい場合面倒なので
|
56
|
+
1つのStoryboardには1つのViewControllerだけを定義するようにすることをお勧めします。
|