我需要什么
当我点击tabBar中的标签页时,我想显示UIAlertView
“正在加载...”。
我想这样做的原因
这是因为该特定标签包含UIWebView
并且非常慢,所以当我点击该标签时,我的应用似乎几秒钟内完全没有任何作用。这非常难看,所以我想展示一些东西让用户知道应用程序实际上正在运行。
问题
我必须把它放在哪个位置?如果我在ViewDidLoad中编写它,则会在那几秒钟之后显示AlertView。 AlertView是最佳选择吗?
谢谢大家。
答案 0 :(得分:1)
将MBProgressHUD添加到UIWebView viewDidLoad方法
- (void)viewDidLoad {
[super viewDidLoad];
self.webView.delegate = self;
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.labelText = @"Loading...";
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[hud hide:YES];
}
答案 1 :(得分:1)
UIAlerView
不是个好主意。
//Delegate method of UIWebView
- (void)webViewDidStartLoad:(UIWebView *)webView
{
if(![[UIApplication sharedApplication] isNetworkActivityIndicatorVisible])
{
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
}
}
//Delegate method of UIWebView
- (void)webViewDidFinishLoad:(UIWebView *)webView_
{
if([[UIApplication sharedApplication] isNetworkActivityIndicatorVisible])
{
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}
}
答案 2 :(得分:0)
在tabBar
delegate
设为viewDidLoad
- (void)viewDidLoad
{
[super viewDidLoad];
//Setting tabBarController as a delegate
self.tabBarController.delegate = self;
}
在您的界面.h
方法添加委托<UITabBarControllerDelegate>
每次按tabBar时,实现此功能并添加加载视图。当用户点击tabbar上的项目时,总会执行以下方法。
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
//Show loading form here
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
// Do something...
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
});
});
}
P.S你需要添加这个方法并设置委托给你需要显示警报视图的每个viewController(加载视图)
对于加载视图,您还可以加载使用MBProgressHUD,如KingBabar指出的那样。它有很棒的功能。