Ios 使用多个UIWindow避免耦合

Ios 使用多个UIWindow避免耦合,ios,uikit,Ios,Uikit,我正在尝试实现一个加载视图,它将全局地表示屏幕的加载状态。此视图将集中在屏幕边界矩形上 此实现将独立于任何ViewController,因此我的第一个猜测是在应用程序委托中使用一个方法(我们将其命名为:-(void)showLoaderView) 创建另一个包含加载视图的UIWindow是否是一个好选项。调用应用程序委托方法“showLoaderView”后,此窗口将很容易显示在另一个窗口的顶部 如果我使用常规视图和addSubview方法,问题在于这会创建坏耦合,因为加载程序视图的位置将取决于

我正在尝试实现一个加载视图,它将全局地表示屏幕的加载状态。此视图将集中在屏幕边界矩形上

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

创建另一个包含加载视图的UIWindow是否是一个好选项。调用应用程序委托方法“showLoaderView”后,此窗口将很容易显示在另一个窗口的顶部

如果我使用常规视图和addSubview方法,问题在于这会创建坏耦合,因为加载程序视图的位置将取决于调用-(void)showLoaderView的时刻

如果你对这个问题有任何其他建议,我很乐意阅读


谢谢,

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

只有当应用程序完全终止时,您才应该真正看到加载屏幕,从那时起,除了标准的第一视图之外,您将无法返回到其他视图

因此,我只需要制作一个UIViewController,它显示加载视图,然后推送到主视图

编辑评论中的答案

为其制作单独的xib

您甚至可以使用它自己的方法使其成为一个单例,该方法从appDelegate中获取UINavigationViewController,然后从堆栈中的topViewController中以模态方式呈现自己,然后解除自身

然后你可以在应用程序中的任何位置执行
[[MyLoadingView sharedInstance]show]
或其他东西,您会得到模态视图,当它完成加载时,它也会自动关闭

编辑2

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

只需使用NSOperationQueue


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

我想让一些真正可重用的东西没有耦合。当我调用showLoaderView时,在代码中的任何地方,它都会在主UI窗口中首先弹出加载视图,就是这样。好主意,但这样我就失去了在背景视图上执行操作的能力,因为加载视图将以模式呈现。编辑我的答案以合并注释。