我目前正在为iOS平台写一个游戏。我已经成功地从服务器下载了登录用户正在参与的游戏的数据,并且我正在使用TCP的GCDAsyncSocket。
现在,我有一个视图(带有一个视图控制器),它在下载数据时显示。此视图有一个加载指示器,可在下载数据时旋转。我也有一个按钮,它最初是禁用的,但应该在数据获取后启用。
现在的问题是,我如何让加载指示器保持旋转,并禁用按钮,直到包含游戏的NSArray被所请求数量的游戏对象填满?如果我做一个
while([gamesArray count] == 0){
<do nothing>
}我停止了应用程序,加载指示器根本不会旋转。然而,如果我做了一个if-check,我就会冒这样的风险:在下载所有游戏之前,将用户带到下一个视图的按钮被启用了……这导致了一个错误的游戏列表。
这样做的正确方法是什么?我想要的是指示器保持旋转,并且禁用按钮,直到数组的长度不再是0(这意味着AsyncSocket已经用来自服务器的对象填充了数组)。
提前感谢!
发布于 2013-11-20 21:58:26
在主线程上显示加载指示器和禁用按钮,然后调用后台线程下载数据,然后隐藏指示器并启用主线程上的按钮。
https://stackoverflow.com/questions/20095706
复制相似问题