代码之家  ›  专栏  ›  技术社区  ›  Chris

NetworkActivityIndicator在iPhone和模拟器上不工作?

  •  0
  • Chris  · 技术社区  · 14 年前

    我正在使用NetworkActivityIndicator来显示我的应用程序正在做一些工作。当我在模拟器中运行应用程序时,它显示了我想要的方式——基本上一直旋转直到选定的选项卡从服务器加载数据——但是当我将应用程序放到我的手机上时,在旋转器消失之前,我只得到一秒钟的时间。通常只在视图出现在屏幕上之前旋转。

    思想?

    编辑:问题可能与我正在使用选项卡的事实有关…在模拟器中,当加载屏幕/选项卡2时,活动指示器将在屏幕/选项卡1上旋转。在电话上,在屏幕2最终出现后的一瞬间,我只看到活动指示器。

    -(void)viewDidLoad {
    
    // call to spinTheSpinner
    [NSThread detachNewThreadSelector:@selector(spinTheSpinner) toTarget:self withObject:nil];
    
    // method to Get the Data from the Server
    [self getDataFromServer];
    
    }
    
    -(void)spinTheSpinner {
        NSLog(@"Spin The Spinner");
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    
        [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
        [self performSelectorOnMainThread:@selector(doneSpinning) withObject:nil waitUntilDone:YES];
    
        [pool release]; 
    }
    
    -(void)doneSpinning {
        NSLog(@"done spinning");
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    }
    
    -(void)getDataFromServer {
        // does a bunch of stuff to retrieve and display data
    }
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   kennytm    14 年前

    你打开旋转器

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    

    但你马上关掉它

    [self performSelectorOnMainThread:@selector(doneSpinning) …];
    

    当然不会显示。我很惊讶它在模拟器上显示。

    这个 -doneSpinning 应调用方法 之后 -getDataFromServer 完成了,或者只是做了

    UIApplication* app = [UIApplication sharedApplication];
    app.networkActivityIndicatorVisible = YES;
    [self getDataFromServer]; // assumes it is blocking.
    app.networkActivityIndicatorVisible = NO;