2011-06-01 85 views
0

当我点击桌面视图中的一个单元格时,如何显示uiactivityindicator,因为它有时需要一些时间才能将它推到下一个视图,因为它从互联网获取信息。uiactivityindicator何时加载页面

我已经成功地完成了它为我的uiwebview,但只是坚持这一点。

谢谢。

+0

您希望显示活动指标的视图?有表视图的人还是被推动的人? – TheBlack 2011-06-01 14:01:51

+0

@TheBlack:我想在桌面视图中显示它。你知不知道怎么?谢谢。 – 2011-06-01 15:19:16

+0

我假设您在didSelectRowForIndex UITableViewDelegate方法中添加活动指示器...您应该添加活动指示器作为表视图的子视图,请求异步http请求,请求完成时关闭活动指示器并推送新的VC。如果您使用同步http请求,它将阻止UI线程,并且您不会看到活动指示符。 – TheBlack 2011-06-01 15:28:29

回答

1

- (void)viewDidLoad webPage.self = delegate; indicator.hidesWhenStopped = TRUE; (无效)webViewDidStartLoad:(UIWebView *)webView {indicator startAnimating];(无效)webViewDidStartLoad:(UIWebView *)webView {indicator startAnimating]; }

- (void)webViewDidFinishLoad:(UIWebView *)webView {indicator stopAnimating]; }

+0

嗨,这不是一个webview我试图把指标。它在我的navigationcontroller中的tableviews。你知不知道怎么?谢谢。 – 2011-06-01 15:18:23

0

您应该在单独的线程(在后台)的下一个视图控制器中执行抓取数据,以便它不会阻止UI。在完成数据获取之前,在那里显示活动指示器。

1
-(void)viewDidAppear:(BOOL)animated { 
[super viewdDidAppear:YES]; 
[indicator startAnimating]; 
NSTimer* timerLoad = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(stopIndicator) userInfo:nil repeats:NO]; 
} 

-(void)stopIndicator { 
[indicator stopAnimating]; 
} 

我认为这给你一个时间负载您的tableView

放入导航控制器

indicator.frame = CGRect(11,130,37,37); 
[navBar addSubview:indicator]; 
+0

&@Abizem:谢谢你们。 – 2011-06-16 15:16:10

0

(无效)viewDidLoad中{

//我们有一个NIB文件在这里播放,所以我在这里放下了loadView。只要确保你的loadView没有被调用两次!

[super viewDidLoad]; 
[self loadView]; 

}

  • (无效)的loadView {

    的UIView *内容查看= [[UIView的页头] initWithFrame:方法[[UIScreen mainScreen] applicationFrame]]; self.view = contentView;

    CGRect webFrame = [[UIScreen mainScreen] applicationFrame]; webFrame.origin.y = 0.0f; myWebView = [[UIWebView alloc] initWithFrame:webFrame]; myWebView.backgroundColor = [UIColor blueColor]; myWebView.scalesPageToFit = YES; myWebView.autoresizingMask =(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); myWebView.delegate = self; [self.view addSubview:myWebView];

    [myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@“http://www.xyz.com/”]]];

    activityIndi​​cator = [[UIActivityIndi​​catorView alloc] initWithActivityIndi​​catorStyle:UIActivityIndi​​catorViewStyleGray]; activityIndi​​cator.frame = CGRectMake(0.0,0.0,40.0,40.0); activityIndi​​cator.center = self.view.center; [self。view addSubview:activityIndi​​cator]; }

  • (void)dealloc {activityIndi​​cator release]; [myWebView发布]; [super dealloc]; }

编译标记网页视图方法

  • (无效)webViewDidStartLoad:(的UIWebView *)webView的 { //开始的负荷,显示在状态栏的活性指示器

    [UIApplication sharedApplication] .networkActivityIndi​​catorVisible = YES; [activityIndi​​cator startAnimating]; }

  • (无效)webViewDidFinishLoad:(的UIWebView *)webView的 { //完成加载时,隐藏在状态栏

    [UIApplication的sharedApplication] .networkActivityIndi​​catorVisible = NO活动性指示符; [activityIndi​​cator stopAnimating]; }

  • (无效)web视图:(的UIWebView *)webView的didFailLoadWithError:(NSError *)错误 { //负载误差,隐藏在状态栏

    [UIApplication的sharedApplication]的活性指示器.networkActivityIndi​​catorVisible = NO;

    //报告网页视图内的错误

    的NSString * Errorstring,则= [NSString的stringWithFormat: @ “

    错误

    您的请求%@”, error.localizedDescription]; [myWebView loadHTMLString:errorString baseURL:nil];

+0

这是有点不清楚你在这里添加什么。这是解决方案还是其他问题? – Matthew 2013-01-31 18:03:07