我正在尝试创建自己的类似于UIAlertView
. 我已经通过在我的自定义视图中添加一些子视图然后将我的自定义视图作为子视图添加到[[[UIApplication sharedApplication].delegate window]
. 我还实现了我自己的委托,以便在按下警报视图中的按钮后从窗口中删除视图。
当委托视图控制器加载时,它会在后台运行一个方法,一旦完成,我就会updateUI
在主队列上运行一个方法。正是在这种updateUI
方法中显示了警报视图。我使用 GCD 执行此操作:
dispatch_async(dispatch_get_main_queue(), ^{ [self updateUI]; });
我遇到的问题是我的委托是嵌入在导航控制器中的视图控制器,当我在后台方法完成之前按“返回”以弹出此委托视图控制器时,警报视图将显示在父视图上视图控制器。在警报视图中按下按钮不会执行任何操作,因为委托现在已离开导航控制器堆栈。
有谁知道为什么仍然显示此警报视图,以及如何防止这种情况发生?我认为弹出委托视图控制器会阻止其updateUI
方法被调用,但看起来无论如何都是这样。