這個聽起來有些拗口,我們用圖片說話
Paste_Image.png
我們暫且將
"個人中心"稱為A控制器;
"設置頁面"稱為:B控制器;
"登錄頁面"稱為:C控制器.
需求描述:
A--->pushViewController---->B
B--->presentModalView--->C
如果當前是頁面B,點擊"退出登錄",然后再點擊頁面C的登錄,是跳到A還是B呢?
Paste_Image.png
答案:頁面B
因為這里的頁面C是presentModal(模態出來的),點擊登錄后會將頁面C給dismiss掉,通過App的周期生命可以知道,在頁面B點擊"退出登錄"那一刻,B依舊還在棧里邊,沒有被移除,只是被頁面C所覆蓋;
需求實現:
從頁面A進入頁面B之后,點擊"退出登錄"彈出頁面C,點擊"登錄",回到頁面A;
思路方法:
在彈出頁面C的回調方法中,加入一個異步耗時操作,偷偷的從頁面B跳到頁面A,等到C重新登錄,自然就看到頁面A了;
Paste_Image.png
關鍵代碼
//在模態窗口的回調中加入以下代碼:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 耗時的操作
dispatch_async(dispatch_get_main_queue(), ^{
// 更新界面
});
});