2011-06-12 58 views
5

我試圖從應用程序委託中解僱UIActionSheet,以便它在您從後臺返回時不再顯示。我試圖解僱子視圖控制器中的viewDidUnloadviewDidDisappear方法的操作表,但似乎在應用程序背景時調用該方法。你如何從應用程序委託中解除UIActionSheet?

因此,我試圖使用應用程序委託來解僱當應用程序背景可能顯示的UIActionSheet。但我無法弄清楚要打電話。有沒有人有辦法解決嗎?或者更好的主意來完成同樣的事情?

謝謝。

+0

你可以在viewWillAppear方法中解僱你的actionSheet – Robin 2011-06-12 02:53:09

+0

這也行不通。也不景觀。 – 2011-06-12 03:00:18

+0

告訴我一些東西你有'UIActionSheet'對象作爲你的類的實例變量或不是 – Robin 2011-06-12 03:29:29

回答

4

@Dylan你可以做的是你可以爲你的uiactionsheet變量聲明屬性,並將其合成。

然後在applicationDidBecomeActive方法的appdelegate中,您可以通過執行類似[viewController.actionSheet dismissWithClickedButtonIndex:0 animated:NO]這樣的調用dismiss方法來關閉該操作表。假設你在你的appdelegate中有引用。

但是,如果沒有,那麼你可以找到所有顯示在uiwindow上的UIViews,然後檢查是否有任何uiviews是顯示actionsheet的類。之後,您可以通過按照上面所寫的方法關閉操作表,只要持有顯示操作表的viewController即可。

+1

謝謝!完美工作!我剛剛發現了viewController,它有一個動作表,就像你說的那樣,並通過執行'actionSheetCancel'來解除它。我很感激。 – 2011-06-12 21:29:40

3

嘗試解除applicationDidBecomeActive方法appDelegate

+0

什麼代碼會這樣做? – 2011-06-12 03:00:51

+0

閱讀UIActionSheet類參考這裏是//隱藏警報表或彈出窗口的方法。當您需要明確解除警報時使用此方法。 (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated通過actionSheet對象調用此方法。如果用戶按下某個按鈕,則不需要調用該方法 – 2011-06-12 03:38:54

+0

請確保您有權訪問您的操作工作表實例 – 2011-06-12 03:39:55

相關問題