我正嘗試創建類似於UIAlertView
的我自己的視圖。我通過添加一些子視圖到我的自定義視圖,然後將我的自定義視圖作爲子視圖添加到[[[UIApplication sharedApplication].delegate window]
中,完成了大部分工作。一旦按下警報視圖中的按鈕,我也實現了我自己的委託從窗口中刪除視圖。使用Grand Central Dispatch和UINavigationController的用戶界面問題
當委託視圖控制器加載時,它在後臺運行一個方法,一旦完成,我在主隊列上運行一個updateUI
方法。在這個updateUI
方法中顯示了警報視圖。我做到這一點使用GCD:
dispatch_async(dispatch_get_main_queue(), ^{ [self updateUI]; });
是我遇到的問題是,我的代表是嵌入在導航控制器視圖控制器,當我按下「返回」鍵,彈出該委託視圖控制器關閉之前後臺方法完成後,警報視圖將顯示在父視圖控制器上。在警報視圖中按下按鈕不會執行任何操作,因爲代理現在不在導航控制器堆棧中。
有誰知道爲什麼這個警報視圖仍然顯示,我怎麼能防止這種情況發生?我認爲關閉代理視圖控制器會阻止它的updateUI
方法被調用,但它看起來好像是無論如何。
感謝您的回答。在閱讀您的回覆之後,我嘗試了對塊中的變量進行弱引用,但我還沒有弄清楚如何使這種方法奏效。但檢查視圖的超級視圖效果很好。再次感謝。 – Kevin 2013-05-03 18:47:16