Не могу увидеть UIActivityIndicatorView во время вызова на сервер для данных - PullRequest
0 голосов
/ 26 марта 2012

Я пишу приложение, которое вызывает сервер для получения данных для отображения пользователю при запуске приложения, вызов к серверу является синхронизирующим вызовом, я хочу показать пользователю UIActivityIndicatorView, но не вижуit Хотя я активирую UIActivityIndicatorView в новом потоке, слышу код:

- (void)viewDidLoad {
    [super viewDidLoad];
    spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    spinner.frame = CGRectMake(50, 50, 50, 50);

    [self.tableView addSubview:spinner];
    [self.tableView bringSubviewToFront:spinner];

    singeltoneData *sing = [singeltoneData sharedInstance]; 
    firstTimeSearch = YES;
    firstTimeSearchClick = YES;
    NSNumber *num = [[NSNumber alloc]initWithInt:-1];
    [NSThread detachNewThreadSelector:@selector(spin:) toTarget:self withObject:nil];
    [self getData:num];

    filterCalls = [[sing.globalCallsDitionary objectForKey:@"Calls"]mutableCopy];
    allCalls = [[sing.globalCallsDitionary objectForKey:@"Calls"]mutableCopy];
    callsDetails = [[sing.globalCallsDitionary objectForKey:@"CallDetails"]mutableCopy];
    filteredCallsDetails = [[sing.globalCallsDitionary objectForKey:@"CallDetails"]mutableCopy];

#if defined(__IPHONE_5_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0
    if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){
        [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"top.png"] forBarMetrics:UIBarMetricsDefault];
    }
#endif

    [self buildBar];    
    woman = [UIImage imageNamed:@"woman.png"];

}

следующая моя функция вращения выглядит следующим образом

/************************************************************/
/*                 Spinner                                  */
/************************************************************/    
- (void) spin:(id)data{
    [spinner startAnimating];

}

Я также вызываю ее изобновить данные вызов на сервер:

- (void)activateActions:(id)sender {
    [NSThread detachNewThreadSelector:@selector(spin:) toTarget:self withObject:nil];
    singeltoneData *sing = [[singeltoneData sharedInstance]autorelease]; 

    [allCalls removeAllObjects];
    [callsDetails removeAllObjects];
    [filterCalls removeAllObjects];
    [filteredCallsDetails removeAllObjects];
    NSNumber *num = [[NSNumber alloc]initWithInt:-1];
    [self getData:num];
    filterCalls = [[sing.globalCallsDitionary objectForKey:@"Calls"]mutableCopy];
    filteredCallsDetails = [[sing.globalCallsDitionary objectForKey:@"CallDetails"]mutableCopy];
    allCalls = [[sing.globalCallsDitionary objectForKey:@"Calls"]mutableCopy];
    callsDetails = [[sing.globalCallsDitionary objectForKey:@"CallDetails"]mutableCopy];
    [self.tableView reloadData];  
}

все еще я не вижу счетчик

любая помощь?

1 Ответ

1 голос
/ 26 марта 2012
[NSThread detachNewThreadSelector:@selector(spin:) toTarget:self withObject:nil];

- (void) spin:(id)data{
    [spinner startAnimating];

}

Исходя из вышеизложенного, вы анимируете счетчик в другом потоке ... но все обновления пользовательского интерфейса должны выполняться в основном потоке ... поэтому это может быть причиной того, что вы не видите анимацию активности

...