teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2016/04/03 12:08

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -21,7 +21,6 @@
21
21
  viewController = storyboard?.instantiateViewControllerWithIdentifier("ViewController") as? ViewController
22
22
  print(viewController!.view)
23
23
  str = viewController!.myLabel.text!
24
- print(str)
25
24
  }
26
25
  ```
27
26
 

1

追記

2016/04/03 12:08

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -3,8 +3,9 @@
3
3
  viewController = ViewController()
4
4
  の書き方ではStoryboardからViewControllerを読み込んで生成はされません。
5
5
 
6
+ > nilが入っていないはずなのにエラー
7
+
6
8
  ```swift
7
-
8
9
  // Implicitly Unwrapped Optional型なので、宣言はされていても初期値はnilです
9
10
  // Storyboardが読み込まれた時点で生成されます。
10
11
  @IBOutlet weak var myLabel: UILabel!
@@ -12,15 +13,6 @@
12
13
 
13
14
  以下の様に書くことでとりあえずはやりたい事はできると思います。
14
15
 
15
- ・StoryboardからViewCotntrollerを生成する
16
- ・この状態ではViewControllerが生成されただけなのでIBOutlet等のパーツはnilです。
17
-
18
- print(viewController!.view)
19
- の行は意味が無いように思いますが、生成したviewControllerのviewにアクセスすることで
20
- IBOutletなどのパーツが生成されます。(ViewControllerのviewDidLoadが呼ばれます。)
21
-
22
- 以上です、しかし取得できるラベルのテキストはStroryboardのラベルに初期設定した文字列なのでいつも同じ文字列です。
23
-
24
16
  ```swift
25
17
  override func viewDidLoad() {
26
18
  super.viewDidLoad()
@@ -31,4 +23,14 @@
31
23
  str = viewController!.myLabel.text!
32
24
  print(str)
33
25
  }
34
- ```
26
+ ```
27
+
28
+ ・StoryboardからViewCotntrollerを生成する
29
+ ・この状態ではViewControllerが生成されただけなのでIBOutlet等のパーツはnilです。
30
+
31
+ print(viewController!.view)
32
+ の行は意味が無いように思いますが、生成したviewControllerのviewにアクセスすることで
33
+ IBOutletなどのパーツが生成されます。(ViewControllerのviewDidLoadが呼ばれます。)
34
+ ※この行が無いとmyLabelがnilで落ちます。
35
+
36
+ 以上です、しかし取得できるラベルのテキストはStroryboardのラベルに初期設定した文字列なのでいつも同じ文字列です。