2011-03-11 81 views
0

我有一個應用程序,它有UITabBar 5視圖,每個附加到不同的UIWebView。每個網頁視圖的響應:UITabBar與UIWebView切換視圖問題

webViewDidStartLoad:(UIWebView *)webView 
webViewDidFinishLoad:(UIWebView *)webView 

這兩個是負責顯示加載屏幕(單獨的圖像爲每個標籤,切換可見或不可見)和活性的指標。

當頁面加載到WebView時,它一切正常。用戶點擊頁面上的鏈接,加載圖像與活動指示符一起顯示。當頁面被加載時,它們都會消失並呈現新的網站。

問題是當用戶點擊其中一個TabBar項目。應用程序攔截事件並在適當的視圖中啓動一個方法,該方法刷新頁面。

問題:點擊視圖立即切換到其他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項目並保持可見,直到頁面停止加載。

回答

0

此問題的解決方案是無延遲地啓動方法goToPage,在goToPage中顯示加載屏幕並將耗時的位移入該類中的另一個方法,該方法使用persormSelector啓動。