我有一个使用 UITableViews 并从服务器获取数据的应用程序。我试图在父 UITableView 上放置一个 UIActivityIndicatorView,因此它在子 UITableView 加载时旋转。我通过 Interface Builder 等将 UIActivityIndicatorView 全部连接起来。
-(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];
}
因此,当我将子 UITableView 推到屏幕上时,UIActivityIndicatorView(微调器)就在父 UITableView 上。如果我转到子 UITableView 然后快速返回父视图,我可以在旋转的动作中捕捉到 UIActivitIndicatorView。NSLogs 显示在正确的时间 - 当我第一次点击父 UITableView 中的单元格时,“Spin The Spinner”出现在日志中。9 秒后,我在日志中“完成旋转”,但除非我及时弹回父 UITableView,否则微调器永远不会旋转。
为什么这不能正常工作的想法?