0

类似于这个问题:添加子视图,被延迟? 但我不认为你可以在单独的线程中 pushViewController 所以这真的不可能吗?

这是我正在尝试做的事情:

我有一个 TableView,当按下一个单元格时,我想调用

[self.view addSubview:LoadingView]

显示带有微调器的叠加层。然后我打电话

self.navigationController.navigationBar.hidden = NO;
[self.navigationController pushViewController:newGameViewController animated:YES];

但是,子视图仅显示一瞬间(在等待新视图控制器初始化的单元格选择发生后约 1-4 秒)。

有什么方法可以在选择单元格的那一刻出现某种加载指示器?

4

3 回答 3

1

好的。那这个呢。在您的 didSelectRowAtIndexPath 中启动您的微调器(通过 addSubview ...)并开始从服务器加载您的内容。如果这完成了移除微调器并将您的新视图控制器推送到堆栈上。确保用户在此期间不能触摸任何其他单元格。顺便一提。从用户的角度来看,如果新控制器立即加载并显示一些等待消息,我会发现它更直观。

于 2012-08-12T16:28:28.100 回答
1

或者相反:newGameViewController显示微调器并开始在后台线程中从服务器加载数据。数据完成后,移除微调器并显示数据。这样,如果她不想等待,用户甚至可以返回。

于 2012-08-12T16:36:13.787 回答
1

在推送 newGameViewController 之前不需要添加代码。

在newGameViewController的viewDidLoad中,编写显示spinner的代码。要获得更新的 UI,只需在调用 Web API 之前插入延迟。

在 GameViewController.m 中

-(void) viewDidLoad
{
    [self.view addSubview:LoadingView];
    [self performSelector:@selector(callWebAPI) afterDelay:0.1];
}

-(void) callWebAPI
{
    //Handle network activity here..
}
于 2012-08-12T16:36:44.797 回答