我在我的应用中使用https://github.com/ali-ehsan/GIFProgressHUD作为加载微调器,但它似乎只附加到单个视图,因此如果我从登录屏幕加载到主屏幕,则在转换期间这个进度会自动消失。
有没有办法让我可以在屏幕之间停留一种类似于活动指示器的视图?
我在Objective-C中开发。
答案 0 :(得分:1)
将进度视图添加(附加)到应用程序的主窗口,而不是转换时要删除的控制器或视图的子视图。
id appDelegate = [UIApplication sharedApplication].delegate;
UIWindow *keyWindow = [appDelegate valueForKey:@"window"];
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
此属性包含最近发送makeKeyAndVisible消息的UIWindow对象。
UIWindow *keyWindow = [[UIApplication sharedApplication] windows].lastObject;
建议:只需标记您的进度视图,以便以后在需要删除时轻松找到它。
<强>更新强>
现在您已经拥有了主窗口(层次结构中最顶层的视图),您可以添加任何类型的堆栈对象(视图,标签,活动指示器等),就像您对任何UIView
一样
// Easiest and most readable way to get the key window
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
UIView *testview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
testview.backgroundColor = [UIColor redColor];
[keyWindow addSubview:testview];
testview.center = keyWindow.center;
更新2:
如果您在传统的UIViewController
转场和演示文稿之外进行导航,那么最后一种方法就是添加新窗口到堆栈as seen here in this SO post.
如果消失视图的问题仍然存在,您可能想尝试更改浏览视图/控制器的方式或在控制器之间传递引用以允许此消息&#34;消失&# 34;观看生活。