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

回答編集履歴

1

viewWillAppearについて補足

2018/02/16 14:42

投稿

nakasho_dev
nakasho_dev

スコア2655

answer CHANGED
@@ -1,4 +1,23 @@
1
1
  [UIViewControllerのライフサイクル](https://qiita.com/motokiee/items/0ca628b4cc74c8c5599d) が参考になります。
2
2
 
3
3
  表示する直前に初期化するならviewWillAppearをoverrideしても良いと思います。
4
- 非表示になったときにviewDidDisappearのoverrideの処理で初期化しても良いと思います。
4
+ 非表示になったときにviewDidDisappearのoverrideの処理で初期化しても良いと思います。
5
+
6
+ 【追記】
7
+ 処理が省略されているので可能か分かりませんが、viewDidLoadで表示した際の内容としたいのであればviewDidLoadで実行した内容をそのままviewWillAppearに書けば内容は同じになるかもしれません。
8
+ また、スクロールを一番上に戻すのであれば、[【Swift】【Objective-C】一番上に、一番下にスクロールする方法](https://qiita.com/sunstripe/items/d352e4806a8e27d8b675)などを参考にviewWillAppear内に記述すればよいと考えます。
9
+ ```Swift
10
+ override func viewWillAppear() {
11
+ super.viewWillAppear()
12
+ //viewDidLoadの処理
13
+ //スクロール処理
14
+ }
15
+ ```
16
+
17
+ ただし、viewDidLoad内の以下の処理は多重に要素を登録してしまうのでviewWillAppearでは実行しない方が良いかもしれません。
18
+ ```Swift
19
+ // indexPageラベル
20
+ indexPageLabel.frame = CGRect(x: 150, y: 10, width: 100, height: 30)
21
+ indexPageLabel.text = "(labelStr!)"
22
+ scrollView.addSubview(indexPageLabel)
23
+ ```