我想在应用启动时从网站加载一些数据。我设置了一个启动画面,在didFinishLaunchingWithOptions中我设置了sleep(10)。现在我希望在这个时间间隔内我的应用程序调用Web服务并加载数据,但我无法做到这一点。请帮帮我或提出任何建议。
答案 0 :(得分:1)
在睡眠期间,线程(在这种情况下,主线程)无法执行任何操作。
我建议您只需显示启动画面,开始加载数据并在加载完所有数据后隐藏启动画面。
答案 1 :(得分:0)
大问题!
首先,不要让主线程睡眠,没有什么能在那里工作,所以只是浪费时间。
相反,设置类似于不断运行UIScrollView的更新页面,只有在获取数据时才会消失。
使用webservice的委托,通过该委托,您可以调用AppDelegate中的函数来删除Loader View并在获取数据时添加HOMEPAGE。
类似的东西,
这只是一个例子......
- (void) webserviceDidFinishLoading //write in appdelegate.m
{
[self.activityIndicatorView removeFromSuperView];
self.window.rootController = self.homeViewController;
}
希望这有帮助! :)
答案 2 :(得分:0)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
splashView = [[UIImageView alloc] initWithFrame:iphoneFrame];
splashView.image = [UIImage imageNamed:@"Default"];
[self.window addSubview:splashView];
//// load you web-service here and get data. After 2 sec iphone rootview controller will display
[self performSelector:@selector(loadViewIphone) withObject:nil afterDelay:2.0];
}
}
-(void)loadViewIphone
{
[splashView removeFromSuperview];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setType:kCATransitionFade];
[animation setDuration:0.5];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:
kCAMediaTimingFunctionEaseInEaseOut]];
[[self.window layer] addAnimation:animation forKey:kAnimationKey];
}
我希望这可以帮助你...
:)
答案 3 :(得分:0)
睡觉主线程并长时间显示启动画面并不是一个好主意。你可以通过一个简单的技巧来实现同样的目的。我认为在你的情况下,服务是在隐藏启动画面后从第一个视图控制器调用的。因此,您可以创建包含相同图像(如启动画面)的模态视图。并显示如下:
SLSDummySplash *dummySplash = [self.storyboard instantiateViewControllerWithIdentifier:@"splashId"];
[self presentViewController:dummySplash animated:NO completion:nil];
完成服务调用/长加载事件后,只需关闭模态视图。
答案 4 :(得分:0)
请参见此处:https://github.com/k06a/LaunchScreenViewController。
在app的第一个视图控制器出现之前显示启动视图控制器。完成从Web加载数据或初始化后,关闭启动视图控制器。
在特定时间后睡觉或执行选择器不是正确的方法,因为根据互联网连接不良,你永远不知道要等多少。