作者redok (火焰)
看板MacDev
標題[問題] present to many view controllers
時間Wed Jan 8 11:15:23 2014
想請問各位一個程式呼叫流程的問題
例如: facebook ios app
一開始全新的用戶會從主頁到登入頁面
再進入到設定資料頁面
再從設定資料頁面進入其它設定頁面 ...(以此類推很多頁面)
那這樣的不就一直
present view controller 很多次造成如下的情況
(虛線箭頭表示 [presentViewController: animated: completion:])
主要頁面---> 登入頁面 ---> 設定頁面1 ---> ... ---> 設定頁面n -->註冊完畢頁面
a b c n z
好不容易註冊完畢後那我就要寫如下的程式碼回到主要頁面
定義 x^y = [viewControllerX dismissViewController: animated: comletion:^{
[viewControllerY dismissViewController ...]
}];
寫成:
a^(b^(c^(...^(n^(z)))))
才會回到原本的主要頁面嗎? (就是 presentVC好幾次後,才一次全部dismissVC)
這樣是正常的嗎?
我個人是比較想要寫成 (即換頁就dismiss該頁面,再present新頁面)
主要頁面 ----> present 登入頁面 ----> dismiss 登入頁面
----> 設定頁面1 ----> dismiss 設定頁面1
.........
----> 註冊完畢頁面 ----> dismiss 註冊頁面 (此時會到登入頁面)
可是不知道要怎麼寫? orz
也想請問大家都怎麼處理這種東西?
感恩看完那麼長的敘述,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 116.89.131.241
※ 編輯: redok 來自: 116.89.131.241 (01/08 11:16)
1F:推 kiii210:popToRootViewController? 01/08 11:29
2F:→ howdiun:小改的話,把登入頁傳給子頁面,註冊完後[登入頁 dismiss] 01/08 11:39
3F:→ redok:1f說的應該是使用 navigation的方式@@ 01/08 12:56
4F:→ redok:2f的意思是說 將最前面的登入頁dismiss的話 其它後面present 01/08 12:57
5F:→ redok:的頁面 也會自動被dismiss? 01/08 12:57
原文"calling this method on a view controller lower in the stack dismisses its
immediate child view controller and all view controllers above that child on
the stack"
阿..所以直接傳登入的 view controller, 並 dismiss後面present的會被全部關掉
那如果是程式上的寫作是用甚麼方式會比較好呢
抑或是說通常大家用怎樣的技巧來進行頁面的切換
有甚麼固定的pattern嗎 (?)
謝謝!
※ 編輯: redok 來自: 116.89.131.33 (01/08 13:18)
6F:推 kiii210:用NSNotificationCenter 完成後在登入頁dismiss? 01/08 13:29
這真的是一個絕妙的想法! 也可行!
不過似乎太大費周章
7F:→ topkiss:有用過addChildViewController嗎?感覺原po只是想要一個 01/08 13:42
8F:→ topkiss:框架去完成登入流程而已@@ 01/08 13:43
9F:→ howdiun:資料設定頁的話,用push比較好吧 01/08 15:29
這只是我舉的範例啦^^ 並不是一定要設定頁
※ 編輯: redok 來自: 116.89.131.33 (01/08 16:36)