等到数据下载而不停止

时间:2013-11-20 12:14:11

标签: ios objective-c tcp wait

我目前正在为iOS平台编写游戏。我已经到了这样的程度,即从服务器上成功下载了有关已登录用户参与的游戏的数据,而我正在使用GCDAsyncSocket for TCP。

现在我有一个视图(带有视图控制器),在下载数据时会显示该视图。此视图有一个加载指示器,在下载数据时旋转。我还有一个最初被禁用的按钮,但是一旦获取数据就应该启用它。

现在问题是,如何使加载指示器保持旋转状态,并且按钮被禁用,直到包含游戏的NSArray填充了所请求的游戏对象数量?如果我做了

while([gamesArray count] == 0){
    <do nothing>
}

我暂停了应用程序,加载指示器根本不会旋转。但是,如果我进行if-check,我会冒着在下载所有游戏之前启用了将用户带到下一个视图的按钮的风险...这导致了一个有缺陷的游戏列表。

这样做的正确方法是什么?我想要的是保持旋转的指示器和要禁用的按钮,直到数组的长度不再为0(这意味着AsyncSocket已使用来自服务器的对象填充它)。

提前致谢!

1 个答案:

答案 0 :(得分:0)

你应该在主线程上显示加载指示器和禁用按钮,然后调用后台线程下载数据,然后隐藏指示器并启用主线程上的按钮。