2010-01-20 103 views
1

我要顯示我的活動的指標,直到整個網頁是loaded.Please幫我出了一些示例程序或blogs.Thanks活動的指標被加載

webView = [[UIWebView alloc] initWithFrame:webFrame]; 
webView.backgroundColor = [UIColor greenColor]; 
[second.view addSubview:webView]; 

webView.backgroundColor = [UIColor grayColor]; 
webView.scalesPageToFit=YES; 
[webView release]; 
NSString *urlAddress = storyLink; 
NSURL *url = [NSURL URLWithString:urlAddress]; 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
[webView loadRequest:requestObj]; 
[(UIActivityIndicatorView *)[self navigationItem].rightBarButtonItem.customView startAnimating]; 

我已經使用上面的代碼

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath {} 

方法。

我創建活動指示燈在下面的方法

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [super viewWillAppear:YES]; 

    UIActivityIndicatorView * activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; 
    UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator]; 
    [self navigationItem].rightBarButtonItem = barButton; 
} 

對我來說,活動idicator是創建和銷燬內3個seconds.I希望它顯示,直到網頁完全loaded.Please幫助我。謝謝。

回答

1

首先,不要撥打[super viewWillAppear:]兩次。只需調用一次即可。其次,你正在泄露activityIndi​​cator和barButton。

您尚未顯示您已將stopAnimating呼叫置於何處。爲了完成你的建議,你需要將自己設置爲webView的委託,並停止webViewDidFinishLoad中的動畫:.

1

請向我們展示您正在執行的活動的代碼(加載網頁)。僅當您的代碼將控制返回到運行循環時,UI纔會更新。如果你的代碼阻塞了主線程(例如使用同步的NSURLConnection),那麼在代碼完成之前,活動指示器不會開始旋轉。您必須在第二個線程中執行您的工作或使用異步操作。

+0

請檢查我是否編輯過我的密碼 – Warrior 2010-01-20 14:30:41

1

您需要實現,以便在UIWebViewDelegate協議得到了解你的網頁在UIWebView中加載狀態:基於這些回調invokations

 
- (void)webViewDidStartLoad:(UIWebView *)webView { 
    //start animating your activity indicator here. 
} 
- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    //stop animating your activity indicator here. 
} 

,你可以啓動/停止你的活動指示燈。