present的時候是可以直接回到第一個viewcon的

來源:互聯網
上載者:User

標籤:

最新:我並沒有記錯,是可以直接回到的 

 [self.presentingViewController.presentingViewController dismissModalViewControllerAnimated:YES]; 

 

如:A present B     然後B present C   

現在想在C裡實現方法,能直接回到A,我原以為有類似的方法呢:self.parentviewcontroller dismiss.........

誰知剛才試了下不行,後來問群裡的兄弟 說我可以是記錯了,只有navigationcontroller的時候是可以直接回到rootviewcontroller的,而dismiss只能一層一層的去掉

難道沒有別的辦法實現直接dismiss到A了嗎: 非也!!!

根據群裡兄弟的建議:

你就B加委託,彈出C的時候,C調用dismiss,回調通知B也dismiss

 

轉載自: http://blog.csdn.net/kmyhy/article/details/7034202

 

一個View Controller A,彈出了一個Modal View Controller B,B又彈出了一個Modal ViewController C??and so on。

如果你在第n個Modal View Controller的時候,想回到第一個View Controller A,或者它前面的第m個ModalView Controller C,那怎麼辦?

你一定想,一層層地解散唄。沒錯,我一開始也是這樣乾的:在C裡解散D,在B裡解散C,在A裡解散B。那麼你會獲得一個“試圖解散當前未顯示的View Controller”錯誤。

蘋果的思維非同凡響,其實你只需要解散一個Modal View Controller就可以了。即處於最底層的View Controller,這樣處於這個層之上的ModalView Controller統統會被解散。

例如:你只用在A中解散B,則C、D、E、F……統統會自動被解散了。

問題在於,你在F中如何獲得A? 如果是iOS 4,你可以使用parentViewController來獲得當前Modal ViewController的“父View Controller”並解散自己。如果是iOS 5,你就得用presentingViewController了。

這樣,你可以不停地parentViewController.parentViewController.parentViewController 下去就可以了。

代碼:

if ([self respondsToSelector:@selector(presentingViewController)]) {    [self.presentingViewController.presentingViewControllerdismissModalViewControllerAnimated:YES]; // for IOS 5+} else {   [self.parentViewController.parentViewControllerdismissModalViewControllerAnimated:YES]; // for pre IOS 5}

 

問題是,有時候你不好確定當前Modal View Controller是鏈中的哪一級。比如有一個工作流程,它在B處有兩個分支,一個是A->B->C->D,一個是A->B->D,走哪一個分支,依賴於使用者的選擇。不管D或者F,處理完之後都要返回到A來進行重新整理。

在D這個地方要返回A時,你不好決定要用幾個parentViewController才能返回A。因為可能是3個(分支1),也可能是2個(分支2)。這樣的情況下你只有用協議或者委託了。把A作為一個delegate,沿著工作流程不停地傳遞下去,這樣不管走分支1還是分支2的流程,D都始終有一個A的引用。當D的工作完成時,直接調用A實現的協議方法,在A的這個方法中解散B就可以了。

present的時候是可以直接回到第一個viewcon的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.