我目前正在通过评估segue.identifier
中的prepareForSegue
来动态加载新视图:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString: @"DetailViewSegue"]) {
DetailViewController *detailController = segue.destinationViewController;
// ... do something with the controller
}
}
这些视图中的一些需要一些时间,因为从Internet收集数据并在表格方案中显示需要相当长的时间。
因此,我希望显示像KVNProgress
这样的进度HUD,但现在的主要问题是进度条显示得太晚,就在新视图准备就绪之前。据我所知,主要问题是prepareForSegue
方法,因此在加载所有数据之前立即调用KVNProgress
,但是加载新视图似乎是首选。
我尝试的另一件事是在KVNProgress
或IBAction
内拨打didSelectRowAtIndexPath
并在自己的主题中调用performSegueWithIdentifier
。然而,这是(因为控制台输出建议)气馁,并且也不起作用。
谢谢!
编辑: 有多次尝试实现这一目标,目前我正试图这样做:
(IBAction)buttonPushed:(id)sender {
[KVNProgress showWithStatus:@"Loading"];
[self performSegueWithIdentifier:@"DetailViewSegue" sender:sender];
}
正如我所描述的,我认为这是我可以在加载新动作之前显示ProgressHUD的最早版本。但是,当加载新视图时,当前视图似乎被阻止,因此不会显示hud。
答案 0 :(得分:1)
有两种解决方案。
当用户点击“加载数据”按钮时,
performSegueWithIdentifier
移至DetailView屏幕或者,您可能更喜欢这样做:
performSegueWithIdentifier
按钮这两者都有利有弊(您可能会发现后者更易于维护,因为其他屏幕会调用此DetailView
屏幕,还需要加载互联网数据以填充此屏幕。)
关键是要决定实现这个的方式,然后让特定的 ViewController执行这两个部分,处理HUD 和加载互联网数据。< / p>