显示启动画面,而下载图像从服务器在ios
问题描述:
在我的应用程序我试图使用滑块使用LWSlideShow LWSlideShow 图像的来源从我的服务器尝试解决方案后取回here我卡住了错误,说不平衡的呼叫这意味着我提出了一个模式的观点,没有完成他的动画解决这个问题后,通过把动画放在没有splashView,我将出现在图像下载之前将被解雇这里是我的代码作进一步解释:显示启动画面,而下载图像从服务器在ios
- (IBAction)goDownload {
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Splash"];
[self.navigationController presentViewController:vc animated:YES completion:nil];
dispatch_async(dispatch_get_main_queue(), ^{
NSMutableArray *array = [@[] mutableCopy];
LWSlideItem *item = [LWSlideItem itemWithCaption:@""
imageUrl:@"http://code-bee.net/geeks/images/cover-1.jpg"];
[array addObject:item];
item = [LWSlideItem itemWithCaption:@""
imageUrl:@"http://code-bee.net/geeks/images/cover-2.jpg"];
[array addObject:item];
item = [LWSlideItem itemWithCaption:@""
imageUrl:@"http://code-bee.net/geeks/images/cover-3.jpg"];
[array addObject:item];
LWSlideShow *slideShow = [[LWSlideShow alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 120)];
slideShow.autoresizingMask = UIViewAutoresizingFlexibleWidth;
//slideShow.delegate = self;
[self.view addSubview:slideShow];
slideShow.slideItems = array;
if ([slideShow.slideItems count] == [array count]) {
[self dismissViewControllerAnimated:YES completion:nil];
}
});
}
//
//-(void)viewWillAppear:(BOOL)animated
//{
//
// UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"Splash"];
// [self.navigationController presentViewController:vc animated:YES completion:nil];
//}
- (void)viewDidLoad {
[super viewDidLoad];
[self goDownload];
}
你也可以从代码中看到,我也尝试使用viewWillAppear同样的事情发生了什么我wan t是什么时候下载图像splashView需要被解雇我不知道我在做什么错
答
在viewDidAppear(如viewDidLoad,viewWillAppear)之前随时从VC运行该代码将导致您描述的问题。但是,您可能不希望幻灯片放映视图出现 - 即使是在一瞬间 - 直到您完成提取资产。这是一个常见问题。
解决方案是意识到“闪屏”和网络任务不仅仅是序言,它们与幻灯片一样是应用程序的一部分。
编辑 让那个Splash vc成为故事板中应用的初始视图控制器。眼下,幻灯片播放VC大概是这样的:
取消选中“在初始视图控制器”复选框,找到你的飞溅视图控制器(在同一个故事板,我希望),并检查它的框成为初始视图控制器。现在你的应用程序将启动飞溅VC,就像你想要的一样。
当飞溅vc完成时,它可以呈现幻灯片放映vc,或者它甚至可以用幻灯片放映自己替换为应用窗口的根。
要更换UI,我用这个片段的变化......
// in the splash vc, after all of the asset loading is complete
// give what used to be your initial view controller a storyboard id
// like @"MySlideShowUI"
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MySlideShowUI"];
UIWindow *window = [UIApplication sharedApplication].delegate.window;
window.rootViewController = vc;
[UIView transitionWithView:window
duration:0.3
options:UIViewAnimationOptionTransitionCrossDissolve
animations:nil
completion:nil];
可以提供有关如何解决我的问题 –
详情哪一部分没有我不解释还不够吗? – danh
使该Splash vc成为故事板中应用程序的初始视图控制器。完成后,它可以呈现幻灯片放映vc,或者甚至可以将其自身(以幻灯片放映)替换为应用程序窗口的根。 –