当我点击表格单元格时,在加载下一个视图之前会有1-2秒的短暂延迟。我看过一些应用程序在那个时间显示了一个活动指示器,这就是我想做的事情。我添加了一个这样的
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
spinner.frame = CGRectMake(200,200,200,200);
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryView = spinner;
[spinner startAnimating];
[spinner release];
VenueViewController *vviewcontroller = [[VenueViewController alloc] initWithNibName:@"VenueViewController" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:vviewcontroller animated:YES];
[vviewcontroller release];
vviewcontroller = nil;}
然而,这也会出现延迟,就在下一个视图显示之前。点击表格单元格后,应用程序似乎冻结了1-2秒,因此它甚至没有显示活动指示器。
答案 0 :(得分:2)
我认为你应该使用performSelector方法调用load方法。另一个提示是隐藏或显示活动,因此不会消耗此操作的时间。
所以这可能是那个
的伪代码在ViewController类定义中:
IBOutlet UIActivityIndicatorView *spin; // created in view and hidden
在您的实施中......
-(void) load{ // your code
VenueViewController *vviewcontroller = [[VenueViewController alloc] initWithNibName:@"VenueViewController" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:vviewcontroller animated:YES];
[vviewcontroller release];
vviewcontroller = nil;
spin.hidden=YES;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
spinner.hidden=NO;
[self performSelector:@selector(load) withObject:nil afterDelay:0];
}
希望它有所帮助。