UIActivityIndicatorView NSURLConnection, представление не отображается - PullRequest
0 голосов
/ 31 мая 2011

У меня проблема с получением UIActivityIndicatorView для отображения при сборе данных с сервера с помощью запроса NSURLConnection.

Запрос, который я считаю асинхронным, т. Е. Запущен в новом потоке. Я скопировал из примера Apple AdvancedTableViewCells. И я запускаю его в XCode в симуляторе iPhone 4.3 на iOS. Я еще не тестировал его на реальном iPhone.

Также я погуглил эту проблему и перепробовал много предложений, но такое ощущение, что я забыл что-то основное. Ниже приведен мой код из класса RootViewController.

Я просто выбираю строку, создаю и добавляю представление активности, запускаю анимацию, а затем создаю объект NSUrlConnection, который, как я полагаю, начинает получать данные с сервера в другом потоке.

Есть идеи?

@interface RootViewController : UITableViewController {
    NSMutableData *receivedData;
    UIActivityIndicatorView *activityView;
}

@end

...

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

    // In my rootviewcontroller
    activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

    [self.view addSubview:activityView];
    [activityView startAnimating];
    …

    NSMutableURLRequest *tUrlRequest = [tQuery createUrlRequest:tStatId];
    NSURLConnection *tConnectionResponse = [[NSURLConnection alloc] initWithRequest: tUrlRequest delegate: self];

    if (!tConnectionResponse) {
        NSLog(@"Failed to submit request");
    } else {
        NSLog(@"Request submitted");
        receivedData = [[NSMutableData data] retain];
    }
    return;
}

...

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    NSLog(@"Succeeded! Received %d bytes of data",[receivedData length]);

    NSXMLParser *tParser = [[NSXMLParser alloc] initWithData: receivedData];
    ...

    [tParser parse]; 
    ...

    [connection release];
    [receivedData release];

    [NSThread sleepForTimeInterval: 2.0]; // Just to see if activity view will show up...

    NSUInteger row = 1;  
    if (row != NSNotFound) 
    { 
        // Create the view controller and initialize it with the 
        // next level of data. 
        VivadataTViewController *vivaViewController = [[VivadataTViewController alloc] init];

        if (activityView != nil) {
            [activityView stopAnimating];
        }
    }
}

1 Ответ

0 голосов
/ 14 января 2014

Возникла та же проблема, попробуйте изменить цвет UIActivityIndicatorView в Инспектор атрибутов -> Стиль на Серый

enter image description here

...