[英]UITabBar with UIWebView problem with switching views
我有一個具有5個視圖的UITabBar的應用程序,每個視圖都附加到不同的UIWebView。 每個WebView都會響應:
webViewDidStartLoad:(UIWebView *)webView
webViewDidFinishLoad:(UIWebView *)webView
這兩個負責顯示加載屏幕(每個選項卡分別顯示圖像,是否切換可見)和活動指示器。
將頁面加載到WebView時,一切正常。 用戶點擊頁面上的鏈接,將顯示加載圖像以及活動指示器。 加載頁面后,它們都消失了,並顯示了新的網站。
問題是當用戶點擊TabBar項目之一時。 App攔截事件並在適當的視圖中啟動方法,這將刷新頁面。
問題:點擊視圖立即更改為另一個WebView之后,但是加載屏幕需要很長的時間才能顯示出來(據我收集,它僅在傳遞給homeView的頁面開始加載時顯示),我不知道為什么。 顯示加載項是調用方法后應用程序應做的第一件事。
這是從TabBar控制器調用方法的代碼:
[hv performSelector:@selector(goToPage) withObject:nil afterDelay:0.0];
這是goToPage方法:
- (void) goToPage
{
homeView.delegate = self;
self.showLoading;
NSURL *url = [NSURL URLWithString: [NSString stringWithFormat: @"%@/seed.php", appURL]];
NSString *body = [NSString stringWithFormat: @"uid=%@", uID];
NSData *data = [body dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: data];
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
[request release];
NSString *seedString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSArray *seedArray = [seedString componentsSeparatedByString:@":::"];
NSString *eventNumber = [[seedArray objectAtIndex:0] retain];
NSString *passedSid = [[seedArray objectAtIndex:1] retain];
if (!seedString) {
// can't connect
NSLog(@"Can't connect.");
}else {
// connected
NSLog(@"Events: %@", eventNumber);
if(![evtNo isEqualToString:eventNumber]){
evtNo = eventNumber;
if(![evtNo isEqualToString:@"0"]){
AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);
}
}
}
NSURL *urlView = [NSURL URLWithString: [NSString stringWithFormat: @"%@/index.php", appURL]];
NSString *bodyView = [NSString stringWithFormat: @"sid=%@", passedSid];
NSData *dataView = [bodyView dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *requestView = [[NSMutableURLRequest alloc]initWithURL:urlView];
[requestView setHTTPMethod: @"POST"];
[requestView setHTTPBody: dataView];
[homeView loadRequest: requestView];
if([evtNo isEqualToString:@"0"]){
// clearing badge
[[[[[self tabBarController] viewControllers] objectAtIndex: 0] tabBarItem] setBadgeValue: nil];
}else{
[[[[[self tabBarController] viewControllers] objectAtIndex: 0] tabBarItem] setBadgeValue: evtNo];
}
}
我的目標是在用戶點擊TabBar項並保持可見直到頁面停止加載時顯示加載圖像。
解決此問題的方法是立即啟動方法goToPage,在goToPage中顯示加載屏幕,然后將耗時的位移動到該類中的另一個方法中,該方法使用persormSelector啟動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.