保持 UIView 从一个控制器到另一个控制器
Keep UIView from one controller to another controller
我在我的应用程序中使用 https://github.com/ali-ehsan/GIFProgressHUD 作为加载微调器,但它似乎只附加到一个视图,所以如果我在过渡期间从登录屏幕加载到主屏幕此进度 HUD 将自动消失。
有没有办法让视图停留在屏幕之间,有点像 activity 指示器?
我正在 Objective-C 开发。
添加(附加)您的进度视图到应用程序的主 window,而不是控制器的子视图或在您转换时被删除的视图。
A - 使用 KVC
id appDelegate = [UIApplication sharedApplication].delegate;
UIWindow *keyWindow = [appDelegate valueForKey:@"window"];
B - 使用 UIApplication
的键window 属性
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
此 属性 包含最近发送 makeKeyAndVisible 消息的 UIWindow 对象。
C - 使用 windows 属性 的 UIApplication
UIWindow *keyWindow = [[UIApplication sharedApplication] windows].lastObject;
建议:只需标记您的进度视图,以便您以后需要删除它时可以轻松找到它。
更新:
现在您有了主要的 window(层次结构中最顶层的视图),您可以像您一样添加您喜欢的任何类型的堆栈对象(视图、标签、activity 指示器等)将对任何 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
转换和演示之外的方式导航,作为最后的手段,您始终可以 添加一个新的 window堆栈 as seen here in this SO post.
如果视图消失的问题仍然存在,您可能想尝试更改浏览视图/控制器的方式或在控制器之间传递引用以允许此"disappearing" 观看生活。
Another reference regarding this type of navigation.
我在我的应用程序中使用 https://github.com/ali-ehsan/GIFProgressHUD 作为加载微调器,但它似乎只附加到一个视图,所以如果我在过渡期间从登录屏幕加载到主屏幕此进度 HUD 将自动消失。
有没有办法让视图停留在屏幕之间,有点像 activity 指示器?
我正在 Objective-C 开发。
添加(附加)您的进度视图到应用程序的主 window,而不是控制器的子视图或在您转换时被删除的视图。
A - 使用 KVC
id appDelegate = [UIApplication sharedApplication].delegate;
UIWindow *keyWindow = [appDelegate valueForKey:@"window"];
B - 使用 UIApplication
的键window 属性UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
此 属性 包含最近发送 makeKeyAndVisible 消息的 UIWindow 对象。
C - 使用 windows 属性 的 UIApplication
UIWindow *keyWindow = [[UIApplication sharedApplication] windows].lastObject;
建议:只需标记您的进度视图,以便您以后需要删除它时可以轻松找到它。
更新:
现在您有了主要的 window(层次结构中最顶层的视图),您可以像您一样添加您喜欢的任何类型的堆栈对象(视图、标签、activity 指示器等)将对任何 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
转换和演示之外的方式导航,作为最后的手段,您始终可以 添加一个新的 window堆栈 as seen here in this SO post.
如果视图消失的问题仍然存在,您可能想尝试更改浏览视图/控制器的方式或在控制器之间传递引用以允许此"disappearing" 观看生活。
Another reference regarding this type of navigation.