簡體   English   中英

UITabBar與UIWebView問題與切換視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM