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

回答編集履歴

4

s

2018/07/16 02:53

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  }
12
12
  ```
13
13
 
14
- 回答追記
14
+ 回答追記1
15
15
  ---
16
16
 
17
17
  特定の`ViewController`に遷移したい場合は`viewcontrollers`の中にその`viewController`が含まれているか確認して含まれていればそこに遷移するようにします。
@@ -25,4 +25,27 @@
25
25
  }
26
26
  }
27
27
 
28
+ ```
29
+
30
+ 回答追記2
31
+ ---
32
+
33
+ viewControllerBが含まれていない場合にViewControllerBを作成してViewControllersを設定しなおす。
34
+
35
+ ```swift
36
+
37
+ if let navi = navigationController {
38
+ for vc in navi.viewControllers {
39
+ if vc is ViewControllerB {
40
+ navi.popToViewController(vc, animated: true)
41
+ }
42
+ }
43
+
44
+ // ViewControllersに `B`が含まれていない場合
45
+ if let viewControllerA = navi.viewControllers.first,
46
+ let viewControllerB = storyboard?.instantiateViewController(withIdentifier: "viewControllerB") {
47
+ navigationController?.setViewControllers([viewControllerA,
48
+ viewControllerB], animated: true)
49
+ }
50
+
28
51
  ```

3

s

2018/07/16 02:53

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -9,4 +9,20 @@
9
9
  let firstVC = navi.viewControllers.first {
10
10
  navi.popToViewController(firstVC, animated: true)
11
11
  }
12
+ ```
13
+
14
+ 回答追記
15
+ ---
16
+
17
+ 特定の`ViewController`に遷移したい場合は`viewcontrollers`の中にその`viewController`が含まれているか確認して含まれていればそこに遷移するようにします。
18
+
19
+ ```swift
20
+ if let navi = navigationController {
21
+ for vc in navi.viewControllers {
22
+ if vc is ViewControllerC {
23
+ navi.popToViewController(vc, animated: true)
24
+ }
25
+ }
26
+ }
27
+
12
28
  ```

2

2018/07/16 01:38

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -2,7 +2,11 @@
2
2
 
3
3
  [UINavigationControllerで2つ以上前の画面に戻る方法](https://qiita.com/k-yamada-github/items/65b8a8cb17fd1912aca5)
4
4
 
5
+ `NavigationController`にぶら下がっている`ViewController`は`navigationController.viewControllers`で取得できるので戻りたい`ViewController`を指定して戻る。
6
+
5
7
  ```swift
8
+ if let navi = navigationController,
6
- // NavigationControllerにぶら下がっているViewControllerを指定して戻る
9
+ let firstVC = navi.viewControllers.first {
7
- navigationController?.popToViewController(navigationController!.viewControllers[1], animated: true)
10
+ navi.popToViewController(firstVC, animated: true)
11
+ }
8
12
  ```

1

s

2018/07/15 22:11

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -3,5 +3,6 @@
3
3
  [UINavigationControllerで2つ以上前の画面に戻る方法](https://qiita.com/k-yamada-github/items/65b8a8cb17fd1912aca5)
4
4
 
5
5
  ```swift
6
+ // NavigationControllerにぶら下がっているViewControllerを指定して戻る
6
7
  navigationController?.popToViewController(navigationController!.viewControllers[1], animated: true)
7
8
  ```