在不重置视图的情况下加载新卡/信息

时间:2016-07-27 19:29:15

标签: ios objective-c

DraggableViewBackground本质上是一副牌。在其中,有一种删除和加载新卡的方法(涉及调用foursquare API)。对foursquare API的调用发生在我的ViewController.m文件中。下面发布的代码来自foursquare方法的调用,专门用于更新。

这是我的ViewController.m文件中的当前转换:

                    draggableBackground = [[DraggableViewBackground alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) :venueList];
                    draggableBackground.tag=1;
                    if(obj.tutorial) {
                        [self.view sendSubviewToBack:[self.view viewWithTag:1]];
                    }
                    else{
                        [self.view addSubview:draggableBackground];
                    }
                }
                if (obj.firstGeoLoc){
                    draggableBackground.firstThree.hidden=NO;
                }else{
                    [draggableBackground.firstThree removeFromSuperview];
                }

我希望我在甲板中间,为下一个甲板加载。但是,在我完成原始套牌之前,我不想重置视图。但是,正如它最初存在的那样,它调用API然后重置DraggableViewBackground,因此用户正在查看一组新的卡片。现在,我希望它可以调用foursquare并因此加载卡片组#14;而不显示新卡片直到第一层卡片结束时

1 个答案:

答案 0 :(得分:0)

好的...所以基于你在评论中的澄清,我觉得你需要将“获取数据”的概念与将视图添加到UI分开。

您需要组织代码,以便在后台进行API调用以检索数据;然后是一个单独的例程来加载UI。这使得执行以下步骤成为一项简单的任务:

  1. 加载初始牌组
  2. 返回数据后显示UI
  3. 立即开始检索下一个套牌到本地缓存。
  4. 由于数据是在后台线程上加载的,因此用户可以继续操作...然后当它们移动到下一个时,您可以拉出本地缓存的数据并立即显示它们。

    如果没有看到更多的代码,有点难以具体,但总的来说(当然还有YMMV),这可能就是你想要构建的东西:)