我正在构建一个应用程序,首先加载一个“下载”视图控制器,该控制器通过API调用获取数据数组。返回数据后,应用程序会隐藏此视图控制器的视图,并加载一个标签栏控制器,其中包含两个导航控制器。

推入第一个导航控制器的第一个视图是表格视图。在此表视图中,我需要在初始“下载”视图控制器中显示从API调用中检索的数据。

有人可以向我解释如何在“下载”和表格视图控制器之间传递这些数据吗?考虑到他们彼此不了解。

重要的一点是,必须在加载标签栏控制器之前获取数据,因此无法简单地从将使用它的表视图控制器中获取数据。

有帮助吗?

解决方案

您的数据从属于应用程序,因此应用程序委托可以保留指向数据的指针,然后两个视图可以使用 [[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并保存数据以供表访问的位置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top