使用多个UIWindow来避免耦合

时间:2013-01-17 13:41:54

标签: ios uikit

我正在尝试实现一个加载视图,它将全局表示屏幕的加载状态。此视图将以屏幕边界rect为中心。

这个实现将独立于任何ViewController,所以我的第一个猜测是在应用程序委托中使用一个方法(让我们命名: - (void)showLoaderView)。

制作包含加载视图的其他UIWindow是一个不错的选择。调用app委托方法“showLoaderView”后,此窗口将轻松显示在另一个窗口的顶部。

如果我使用常规视图和addSubview方法的问题是这会产生错误的耦合,因为加载器视图的位置将取决于 - (void)showLoaderView将被调用的时刻。

如果您对此问题有任何其他建议,请阅读。

谢谢,

1 个答案:

答案 0 :(得分:1)

如果你的应用处于一种状态,它会直接进入它处于非活动状态之前所处的视图,那么它将不需要加载屏幕,因为资源仍然可用。

如果应用程序已完全终止,您应该只看到加载屏幕,从那时起您将无法返回标准第一个视图以外的其他视图。

因此我只想制作一个显示加载视图的UIViewController,然后推送到主视图。

从评论中编辑答案

为它制作一个单独的xib

你甚至可以使用它自己的方法使它成为单例,从appDelegate获取UINavigationViewController,然后从堆栈中的topViewController以模态方式呈现自己,然后自我解释

然后在应用中的任何地方你都可以[[MyLoadingView sharedInstance] show];或者其他什么来获得模态视图,当它完成加载时它也会自行解散。

编辑2

您仍然可以将操作推送到BG线程。

只需使用NSOperationQueue。

也许您需要一个用于显示目的的加载视图和一个实际完成工作的加载单例类。这样,加载视图可以被解除,加载类仍然可以在后台完成工作。