2014-01-29 66 views
1

在我的簡單導航樣式iPhone應用中,當用戶按下按鈕時,我使用presentViewController呈現視圖控制器V1(模態地)。dismisViewController在第一響應者設置時泄漏視圖控制器

當用戶按下另一個按鈕時,會使用presentViewController顯示另一個視圖控制器V2(模態地)。

我然後嘗試都一氣呵成駁回調用dismissViewController根導航控制器上,並如預期,他們從屏幕上:-)但是消失當我登錄的dealloc調用,那麼我什麼也看不到:-(

通過試驗和錯誤我跟蹤了這​​個問題,事實上在V1中,我實現了canBecomeFirstResponder == YES。如果我將其更改爲NO,則所有事情都會正常釋放,就好像第一響應者在V1上保留一個引用。 V2我看到V1辭職的第一響應者。事實上,如果我沒有呈現V2,那麼V1將會釋放就好了/

任何人看到這樣的事情或知道會發生什麼上?我在iOS7

[更新:我使用ARC,這一切都在一個非常簡單的測試應用 - 所以沒有委託或強引用的任何地方)

感謝。

+0

你使用ARC嗎? –

+0

斯科蒂嗨,你找到答案了嗎?導航控制器作爲子視圖控制器添加時遇到同樣的問題。 – hybridcattt

回答

1

爲什麼不在提交V2之前先解僱V1?那麼你只需要關閉V2即可回到根目錄。

+0

從技術上講,我可以 - 但我很討厭它,因爲它是一個有效的用戶界面(許多內置的應用程序呈現模式視圖控制器,一個在另一個之上 - 例如郵件)。Apple文檔還聲明它應該是可能的用dismissViewController一次性解散所有VC。 – Scotty

0

在解除導航控制器之前,先調用poptorootviewcontroller。

+0

沒有區別... – Scotty

+0

介意分享一些代碼? –

相關問題