我正在构建一个应用程序,首先加载一个“下载”视图控制器,该控制器通过API调用获取数据数组。返回数据后,应用程序会隐藏此视图控制器的视图,并加载一个标签栏控制器,其中包含两个导航控制器。
推入第一个导航控制器的第一个视图是表格视图。在此表视图中,我需要在初始“下载”视图控制器中显示从API调用中检索的数据。
有人可以向我解释如何在“下载”和表格视图控制器之间传递这些数据吗?考虑到他们彼此不了解。
重要的一点是,必须在加载标签栏控制器之前获取数据,因此无法简单地从将使用它的表视图控制器中获取数据。
答案 0 :(得分:1)
您的数据从属于应用程序,因此应用程序委托可以保留指向数据的指针,然后两个视图可以使用[[UIApplication sharedApplication] delegate]
访问它。
另一种选择是在下载完成时将带有数据的消息发送给应用程序代理。我假设你已经在做这样的事了,因为你说app隐藏了视图控制器的视图,而不是视图控制器隐藏自己。不知何故,它必须知道下载完成。所以,在下载控制器中:
- (void) downloadFinished {
[listener downloadFinished:data];
}
在您的应用程序委托中(前一个代码段中的listener
):
- (void) downloadFinished:(NSData *)data {
CustomViewController *c = [[[CustomViewController alloc] initWithData:data] autorelease];
[downloadView removeFromSuperview];
[window addSubview:c.view];
}
自定义视图控制器处理加载NIB并保存数据以供表访问的位置。