在ios中从服务器下载图像时显示启动屏幕

在ios中从服务器下载图像时显示启动屏幕,ios,objective-c,splash-screen,Ios,Objective C,Splash Screen,在我的应用程序中,我尝试使用LWSlideShow制作一个滑块 图像源是在尝试解决方案后从我的服务器上获取的。我遇到了错误,这表示调用不平衡,这意味着我在一个视图上呈现一个模式视图,该视图在通过将动画设置为“否”解决此问题后未完成其动画。我呈现的splashView将在图像下载之前被取消以下是我的代码以作进一步解释: - (IBAction)goDownload { UIViewController *vc = [self.storyboard instantiateViewCont

在我的应用程序中,我尝试使用LWSlideShow制作一个滑块 图像源是在尝试解决方案后从我的服务器上获取的。我遇到了错误,这表示调用不平衡,这意味着我在一个视图上呈现一个模式视图,该视图在通过将动画设置为“否”解决此问题后未完成其动画。我呈现的splashView将在图像下载之前被取消以下是我的代码以作进一步解释:

 - (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];
    }

另外,你可以从代码中看到,我也尝试使用ViewWillEmerge。同样的事情发生了。我想要的是,当图像下载时,splashView需要取消。我不知道我做错了什么。在ViewDidEmerge(如viewDidLoad,ViewWillEmerge)出现之前的任何时候,从VC运行该代码都会导致您描述的问题。但是,在提取完资产之前,您可能不希望幻灯片放映视图出现,即使是一瞬间。这是一个常见的问题

解决方案是认识到“启动屏幕”和网络任务不仅仅是序言,它们与幻灯片一样,也是应用程序的一部分

编辑
在情节提要中将该应用程序的初始视图控制器设置为Splash vc。现在,vc的幻灯片可能是这样的:

取消选中“是初始视图控制器”复选框,找到您的初始视图控制器(我希望在同一个故事板中),并选中它作为初始视图控制器的复选框。现在,你的应用程序将在splash 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];

在ViewDidDisplay(如viewDidLoad、ViewWillDisplay)出现之前的任何时候从VC运行该代码都会导致您描述的问题。但是,在提取完资产之前,您可能不希望幻灯片放映视图出现,即使是一瞬间。这是一个常见的问题

解决方案是认识到“启动屏幕”和网络任务不仅仅是序言,它们与幻灯片一样,也是应用程序的一部分

编辑
在情节提要中将该应用程序的初始视图控制器设置为Splash vc。现在,vc的幻灯片可能是这样的:

取消选中“是初始视图控制器”复选框,找到您的初始视图控制器(我希望在同一个故事板中),并选中它作为初始视图控制器的复选框。现在,你的应用程序将在splash 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];

你能提供更多关于如何解决我的问题的细节吗?我对哪一部分解释得不够充分?在情节提要中,让应用程序的初始视图控制器成为Splash vc。完成后,它可以展示幻灯片,甚至可以替换自己(用幻灯片)作为应用程序窗口的根。如果你知道uber应用程序在你启动应用程序时会有一个启动屏幕,直到数据加载完毕,然后如何返回Tabbar控制器。你能提供更多关于如何解决我的问题的详细信息吗?哪一部分我解释得不够?让该启动vc成为故事板中应用程序的初始视图控制器。完成后,它可以呈现幻灯片放映vc,甚至可以将自己(用幻灯片放映)替换为应用程序窗口的根。如果你知道uber应用程序在你启动应用程序时会出现一个启动屏幕,直到数据加载完毕,然后如何返回Tabbar控制器