我使用UINavigationController
和UITableView
一起使用,当用户触摸一个单元格时,它会将另一个视图控制器推到屏幕上。Objective-C - 延迟UINavigationController pushViewController
在我推送到屏幕上的这个视图控制器中,我在UIWebView
中加载了一些HTML,因此在加载HTML之前需要一些时间。我想推迟导航控制器(等待HTML完成加载后),然后将视图控制器推到屏幕上。我怎样才能实现这个编程?
我使用UINavigationController
和UITableView
一起使用,当用户触摸一个单元格时,它会将另一个视图控制器推到屏幕上。Objective-C - 延迟UINavigationController pushViewController
在我推送到屏幕上的这个视图控制器中,我在UIWebView
中加载了一些HTML,因此在加载HTML之前需要一些时间。我想推迟导航控制器(等待HTML完成加载后),然后将视图控制器推到屏幕上。我怎样才能实现这个编程?
将
[performSelector:withObject:afterDelay:][1]
为你工作?沿着线的东西:
[navigationController performSelector:@selector(pushNewViewFromTableCell:) withObject:view afterDelay:1.0]
但是你应该小心的响应延迟,这将产生:用户将触摸一排,然后,延迟一段时间后,控制器将被推动。
可能的话,通过在导航控制器加载数据时在导航控制器上推送的新视图中显示进度指示器,可能会更好。
我见过在加载数据时在表格视图单元格内使用活动指示器的应用程序。好奇他们是如何将Web视图加载到表视图单元格的。 –
我猜通过UIWebViewDelegate方法,当UIWebView开始加载并完成时,调用它来发信号... – sergio
啊,是的,这是真的,只需将UIWebViewDelegate设置到我的表视图控制器即可。 –
你也可以实现这一点,并把它“等待”正确的委托函数被调用:
- (void)webViewDidFinishLoad:(UIWebView *)webView
你不能准确找到下载的时间。所以最好立即用UIWebView
显示第二个视图。
显示与活动的指标的第二视图中
- (void)webViewDidStartLoad:(UIWebView *)webView
方法开始。
中和,
- (void)webViewDidFinishLoad:(UIWebView *)webView
法,停止和隐藏的指标。
我认为你应该立即推新viewController,并显示一个指示器,它仍在加载,这会让你的界面看起来更具响应性。 – Ahti