

こんにちは。いつもお世話になっています。

いま自分の作ってるプログラムでTodoリストてきなものがあるのですが。

依存関係が  
1：mypage->やること作成->やること詳細というviewcontrollerの依存関係があるのですが、  
その際もう一つ依存関係が有りまして、2：mypage->やること一覧->やること詳細という流れの依存関係があります。

そこで自分は1の流れを通って2のフローで戻るようなプログラムを書きたいのです。

言語はswift2.0を使っています。  
ぜひお力をお貸しください。


CC BY-SA 3.0
2015-08-02T02:41:07.177
12938
2015-08-11T13:31:39.227
10760
question
ios swift ios8
親子関係でないviewcontrollerに戻るを適用したい。


`UINavigationController`を使っている前提でお話しますと、[`setViewControllers(_:animated:)`](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITabBarController_Class/#//apple_ref/occ/instm/UITabBarController/setViewControllers:animated:)で実現できます。

`UINavigationController`は`ViewController`をスタック構造で管理しているだけのクラスです。通常は`push/pop`で操作するかと思いますが、`setViewControllers()`を使うことで`UIViewController`のスタックの内容を直接操作できます。

実装的には、「やること作成->やること詳細」での画面遷移メソッドを`push`から`set`に変えます。このとき、`setViewControllers()`に`[mypage,
やること作成, やること詳細]`の`ViewController`の`Array`を渡します。


CC BY-SA 3.0
2015-08-02T04:10:52.610
12939
2015-08-02T04:10:52.610
5337
12938
answer


そもそも論なのですが、その画面遷移にちょっと違和感を感じました。


CC BY-SA 3.0
2015-08-07T11:24:30.313
13144
2015-08-07T11:24:30.313
3574
12938
answer


Web版に仕様を合わせようとしているのでしたら  
どうして`UINavigationController`を使わないのですか?

Webの画面遷移と`UINavigationController`は  
とても親和性が高いと思うのですが。

むしろWeb版で「1の流れを通って2のフローで戻る」というのを  
どう実現しているのか不思議です(というか、具体的にどういう  
遷移なのか今一つ理解できていません)。

そこをWeb版でどうやっているのかきちんと分析した上で  
`UINavigationController`ベースで同じようにすれば  
よいのではないかという気がします。

その際、あなたが今使っている「戻る」というキーワードが  
具体的にどうすることなのか明確にしておくべきだと思います。  
Webなら「戻る」と言っても、  
ブラウザの「戻る」ボタンで前の画面に戻るケースと  
画面内の「戻る」ボタンで元の画面と同じURLに遷移する  
(実際には戻っているのではなく新しい画面を生成している)  
ケースの2種類ありますよね。

ちなみに「UINavigationControllerではなくセグエを使っています」  
と書かれていますが`UINavigationController`を使うか否かと  
セグエを使うか否かは全く別の話です。  
`UINavigationController`で画面を構成してpushセグエで遷移する  
こともできます。  
そこは理解していて、  
・`UINavigationController`を使っていない  
ということと  
・セグエを使っている  
ということの  
2つを上記1文で表しただけという認識でよいのでしょうか?


CC BY-SA 3.0
2015-08-11T13:31:39.227
14287
2015-08-11T13:31:39.227
9367
12938
answer