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

回答編集履歴

2

blackViewとの決別

2018/07/11 05:02

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -1,4 +1,4 @@
1
- # その後はもう2度と表示させたくない
1
+ # 2度と表示させたくない
2
2
 
3
3
  表示フラグを作ってUserDefaultsに保存して下さい。
4
4
 
@@ -18,4 +18,19 @@
18
18
  }
19
19
  ```
20
20
 
21
- これが原因だとすれば、blackViewの生成〜表示(addSubview)を`addSnapshotListener`の外に出せばいいです。
21
+ これが原因だとすれば、blackViewの生成〜表示(addSubview)を`addSnapshotListener`の外に出せばいいです。
22
+
23
+ # blackViewの削除
24
+
25
+ viewDidDisappearにしようかと思いましたが、`present(_:animated:completion:)`のcompletionハンドラを使います。(こっちの方が分かりやすいと思うので)
26
+
27
+ FirstViewControllerに遷移したタイミングでblackViewを削除します。
28
+ blackViewはインスタンス変数にしておいて下さい。
29
+
30
+ ```swift
31
+ self.present(navi, animated: true) {
32
+ //FirstViewControllerへの遷移が完了した時点で実行されます
33
+ print("presented")
34
+ blackView.removeFromSuperview() //blackViewを剥がす
35
+ }
36
+ ```

1

0.5sec

2018/07/11 05:02

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -1,21 +1,21 @@
1
- > その後はもう2度と表示させたくない
1
+ # その後はもう2度と表示させたくない
2
2
 
3
3
  表示フラグを作ってUserDefaultsに保存して下さい。
4
4
 
5
- > 約0.5秒後に遅れて表示される
5
+ # 約0.5秒後に遅れて表示される
6
6
 
7
- 表示させているとメインスレッドじゃなさそうなで、メインスレッドで実行して下さい。
7
+ の遅れの原因`addSnapshotListener`の実行完了までの時間ではなかと思います
8
+ 下記のようにNSLog()を追加してログを確認してみて下さい。(ログの左端に時間が表示されます)
8
9
 
9
10
  ```swift
11
+ NSLog("") //ログ出力
12
+ dataListener = userRef.addSnapshotListener { [unowned self] (docSnapshot, error) in
10
- guard let docSnapshot = docSnapshot, docSnapshot.exists else {
13
+ guard let docSnapshot = docSnapshot, docSnapshot.exists else {
11
-
12
- print(Thread.isMainThread) //これがfalseならメインスレッドではない
14
+ NSLog("") //ログ出力
13
- DispatchQueue.main.async {
14
- //この中はメインスレッド
15
- //blackView表示
16
- //遷移処理もここに書く
15
+ :
17
16
  }
18
-
19
17
  return
20
18
  }
21
- ```
19
+ ```
20
+
21
+ これが原因だとすれば、blackViewの生成〜表示(addSubview)を`addSnapshotListener`の外に出せばいいです。