也許這是一個愚蠢的問題,但是如何檢測警報是否可見,如果該警報屬於另一個視圖控制器?檢測來自另一個VC的警報是否可見
我的意思是,如果警報(稱爲myAlert
)屬於我檢查的視圖控制器,那麼使用[myAlert isVisible]
會告訴你。但是,如果該警報屬於另一個視圖控制器(稱爲myOtherAlert
),並且如果您有10個其他視圖控制器則甚至最差,您將如何操作?檢查每一個可能的myOtherViewController.myOtherAlert
?沒有更好的方法嗎?
也許這是一個愚蠢的問題,但是如何檢測警報是否可見,如果該警報屬於另一個視圖控制器?檢測來自另一個VC的警報是否可見
我的意思是,如果警報(稱爲myAlert
)屬於我檢查的視圖控制器,那麼使用[myAlert isVisible]
會告訴你。但是,如果該警報屬於另一個視圖控制器(稱爲myOtherAlert
),並且如果您有10個其他視圖控制器則甚至最差,您將如何操作?檢查每一個可能的myOtherViewController.myOtherAlert
?沒有更好的方法嗎?
的情況下,如果你有你每次打開一個提醒您(全局)變量增加1,每當你(呃,用戶)關閉一個(但是,然後,你必須通過委託來檢測關閉),你減1。然後,如果變量等於零,沒有警報活動。聽起來很有用,但它是......獨立於語言的。
一種選擇是將警報包裝在自己的班級中,併爲顯示的警報添加班級計數器。然後,如果有任何警報目前可見,您可以隨時諮詢課程。
也許你可以遍歷主窗口的子視圖,看看它們之間是否有警報。 (這實際上並不工作 - 請參閱註釋。)
您還可以重新考慮您的UI邏輯,以便無法一次顯示多個警報。我的意思是,只要您顯示警報,用戶就無法切換到不同的視圖控制器。這意味着在屏幕上顯示警報以及未顯示警報的視圖控制器應該非常少見。
該警報不屬於任何視圖或視圖控制器。實際上,它顯示在另一個UIWindow
中,我不認爲您可以查看它是否可見,除非您編寫自己的集中式邏輯來跟蹤您的應用程序中何時顯示和解除警報。
如果我正確理解你,你的問題是,有時你的視圖控制器顯示警報視圖,即使他們目前不可見。在這種情況下,有一個簡單的解決辦法:
if ([self.view window]) {
[alertView show];
}
如果這不是我建議你看看聯想引用http://labs.vectorform.com/2011/07/objective-c-associated-objects/
不,那不是我的問題。 – Georgia
聽起來不錯。我會嘗試。 – Georgia