Frage

Ich habe eine App UITableViews verwenden und Daten von einem Server abgerufen werden. Ich versuche, eine UIActivityIndicatorView auf der übergeordneten UITableView zu setzen, so dreht es während der Kinder UITableView Laden ist. Ich habe die UIActivityIndicatorView alle hookedup durch Interface Builder, usw.

-(void)spinTheSpinner {
    NSLog(@"Spin The Spinner");
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    [spinner startAnimating];
    [NSThread sleepForTimeInterval:9];
    [self performSelectorOnMainThread:@selector(doneSpinning) withObject:nil waitUntilDone:NO];
    [pool release]; 
}

-(void)doneSpinning {
    NSLog(@"done spinning");
    [spinner stopAnimating];
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [NSThread detachNewThreadSelector:@selector(spinTheSpinner) toTarget:self withObject:nil];

    NSMutableString *tempText = [[NSMutableString alloc] initWithString:[categoryNumber objectAtIndex:indexPath.row]];
    Threads *viewController = [[Threads alloc] initWithNibName:@"newTable" bundle:nil tagval:tempText SessionID:PHPSESSID];
    [self.navigationController pushViewController:viewController animated:YES];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    [viewController release];                   
}

Also, wenn ich das Kind UITableView auf den Bildschirm drücken, die UIActivityIndicatorView (Spinner) sitzt nur da an den Eltern-UITableView. Wenn ich an das Kind UITableView gehen und dann schnell auf die Eltern zurück Ansicht, kann ich die UIActivitIndicatorView im Akt der Spinn fangen. Die NSLogs sind zu den richtigen Zeiten zeigen - wenn ich die Zelle in der Mutter UITableView ersten tippen, die "Spin The Spinner" erscheint im Log. 9 Sekunden später, erhalte ich „done Spinnen“ im Log, aber der Spinner nie dreht, wenn ich an die Eltern UITableView in der Zeit Pop zurück.

Ideen, warum dies funktioniert nicht richtig?

War es hilfreich?

Lösung

Vielleicht ist die sleepForTimeInterval die Animation blockiert.

Versuchen Sie, die sleepForTimeInterval und ersetzt performSelectorOnMainThread mit einem Aufruf an performSelector:withObject:afterDelay: zu entfernen.

Andere Tipps

ließ die ui Anzeige es Außengewinde:

[NSObject dispatchUI:^{
     [spinner startAnimating];
}];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top