2013-01-10 38 views
1

也許這是一個愚蠢的問題,但是如何檢測警報是否可見,如果該警報屬於另一個視圖控制器?檢測來自另一個VC的警報是否可見

我的意思是,如果警報(稱爲myAlert)屬於我檢查的視圖控制器,那麼使用[myAlert isVisible]會告訴你。但是,如果該警報屬於另一個視圖控制器(稱爲myOtherAlert),並且如果您有10個其他視圖控制器則甚至最差,您將如何操作?檢查每一個可能的myOtherViewController.myOtherAlert?沒有更好的方法嗎?

回答

2

的情況下,如果你有你每次打開一個提醒您(全局)變量增加1,每當你(呃,用戶)關閉一個(但是,然後,你必須通過委託來檢測關閉),你減1。然後,如果變量等於零,沒有警報活動。聽起來很有用,但它是......獨立於語言的。

+1

聽起來不錯。我會嘗試。 – Georgia

0
  • 一種選擇是將警報包裝在自己的班級中,併爲顯示的警報添加班級計數器。然後,如果有任何警報目前可見,您可以隨時諮詢課程。

  • 也許你可以遍歷主窗口的子視圖,看看它們之間是否有警報。 (這實際上並不工作 - 請參閱註釋。)

  • 您還可以重新考慮您的UI邏輯,以便無法一次顯示多個警報。我的意思是,只要您顯示警報,用戶就無法切換到不同的視圖控制器。這意味着在屏幕上顯示警報以及未顯示警報的視圖控制器應該非常少見。

+0

'也許你可以遍歷主窗口的子視圖,看看它們之間是否有警報。「 - 這是不正確的,因爲alert視圖在另一個」UIWindow「中呈現,並且它不會在視圖中的任何位置應用程序窗口的層次結構。 – graver

+1

第一看起來更有希望。我希望第二個可以工作(這就是我一直在尋找的)。 – Georgia

0

該警報不屬於任何視圖或視圖控制器。實際上,它顯示在另一個UIWindow中,我不認爲您可以查看它是否可見,除非您編寫自己的集中式邏輯來跟蹤您的應用程序中何時顯示和解除警報。

+1

警報可以說是「記錄」到視圖控制器,因爲控制器已經顯示了它,並且可能還包含對它的引用。 – zoul

+0

它可以屬於一個提供表示上下文的控制器..而'UIAlertView'則不是這種情況。你可以在任何地方,任何時間展示它 - 單身課程,應用程序代理,你的一些對象,視圖,視圖控制器等等...... – graver

+0

不會。如她所說,[myAlert isVisible]會告訴你它是否可見。她的問題是,這隻適用於打開警報的VC。 – Gik

相關問題