更改视图(Segue)时显示活动指示器并加载下一个视图(API)的数据

时间:2013-11-25 00:29:51

标签: ios iphone objective-c cocoa-touch uitableview

嗯,我真的需要一些帮助 我有一个搜索视图,当用户点击单元格(基本上是游戏)时,视图会变为游戏视图。 Atm我没有使用任何异步的东西所以当游戏视图加载时,点击单元格后,应用程序在搜索视图上挂起2-3秒(因为游戏视图的viewDidLoad方法从web API加载所有数据)

我想要做的是当用户在searchView中点击游戏时,gameView会立即显示一个空白视图和一个活动指示器,同时数据从API获取。
一旦获取了数据,gameView(这是一个tableView btw)重新加载数据并相应地从获取的数据中显示它。

如果它有任何差异。我正在为gameView使用静态单元格,因此不使用cellAtRowIndex代码。

我已经附加了一些我尝试使用的方法的图像,因为我在搜索AF以进行AFNetworking,async等等。

表IB元素是从一个单独的函数showGame中填充的,我在rowsForSection中调用此函数,因为在块完成后将重新加载表。对不起,但我不确定什么是重新加载表或更确切地显示数据的最佳方法。

Atm我的应用程序向我展示了我在界面构建器中创建的默认静态内容(并且只有1行)。 AKA表格没有更新。我使用断点来检查,是的,showGame正在获取正确的数据,将正确的数据传递给IB元素。即使执行到达代码中的点也会返回5/6行,但实际的app / view没有正确更新。

the function to fetch the game from my API and store it in a property array

The table IB elements are filled from data in a separate function showGame, I am calling this function in rowsForSection since table will be reloaded after block completion.


对于那些想要使用pastebin文本代码的人来说,这里是:

.m文件,其中从API获取游戏的异步代码为
http://pastebin.com/p2FETbku

我的gameView类/ tableView的.m文件显示了表视图和数据,这个文件还有showGame方法来显示从上面提取的游戏数据
http://pastebin.com/cWtSKPw0

请原谅我的代码或任何小错误,我仍处于学习阶段,并且刚刚在3周前开始。


静态单元在我使用异步方法之前工作正常,不知怎的,它在reloaddata期间/之后搞砸了

1 个答案:

答案 0 :(得分:0)

我认为您缺少的一点是执行此声明

GDgameViewController *gdv = [[GDgameViewController alloc] init];

不返回tableViewController,因此返回当前显示的tableView。

因此,在您的函数+(void) fetchGame:(NSString *)gid中,您正在重新加载的是未显示的tableView 为了进一步帮助您,我为您创建了一个项目,它使用了一种不同的方法来完成您的工作,但它以最佳方式完成。您可以找到项目here。如果您不知道如何使用gitHub,请不要担心只需下载zip文件Image Showing From Where。请将此计为