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

回答編集履歴

2

追記1

2017/05/09 09:15

投稿

acevif
acevif

スコア59

answer CHANGED
@@ -11,4 +11,15 @@
11
11
  - A -> B と遷移
12
12
  - Bでユーザーが操作を完了
13
13
  - B -> A と戻る
14
- - AはA -> Cと遷移させる
14
+ - AはA -> Cと遷移させる
15
+
16
+ **追記1**
17
+ メニューならば、Aの画面の一部と考えて、
18
+ - A -> B
19
+ - B -> A
20
+ - A -> C
21
+ という遷移がよさそうですね。
22
+
23
+ 恥ずかしながら私も詳しくないのですが、iOSにはmodal遷移(modallyな遷移)とそうでない遷移(push等)があるようで、どちらの遷移かによって振る舞いが変わるようです。
24
+ 遷移の種類は、Storyboardならばセグエのプロパティで設定できます。
25
+ アプリによって適切な遷移が変わってくるとおもうので、いろいろ試してみてくださいね。

1

表記ミスを修正

2017/05/09 09:15

投稿

acevif
acevif

スコア59

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  [こちらの公式ドキュメント](https://developer.apple.com/reference/uikit/uiviewcontroller/1621505-dismiss)によると、`self.dismiss`は`UIViewController`によってmodallyに表示された`UIViewController`を閉じるとあります。
2
2
  つまり、`self`に対して`dismiss`を呼べば、`self`がmodallyに表示した遷移先が閉じるのは当たり前なのではないでしょうか。
3
3
 
4
- 対策としては、遷移元(Bとする)の遷移元(Aとする)であるBに対して`dismiss`を呼び、遷移元Bを閉じてもらうという方法があると思いますが、それではBから遷移先Cにmodallyに遷移していた場合、Bを閉じるとCも閉じてしまうと思います。
4
+ 対策としては、遷移元(Bとする)の遷移元(Aとする)に対して`dismiss`を呼び、遷移元Bを閉じてもらうという方法があると思いますが、それではBから遷移先Cにmodallyに遷移していた場合、Bを閉じるとCも閉じてしまうと思います。
5
5
 
6
6
  そもそも`UIViewController`はその子の`UIViewController`を閉じることに責任があるとありますから、子が親を閉じるが、子は閉じられたくない、という設計に問題があるのではないでしょうか。(それでは親が責任を果たさず閉じることになる)
7
7
  それよりも、その設計を見直すのはどうでしょう。