iPhone -
问题描述:
我建立,通过加载它通过API调用获取数据的阵列的“下载”视图控制器开始一个应用程序传递两个非相邻控制器之间的阵列。数据返回后,应用程序将隐藏此视图控制器的视图,并加载一个标签栏控制器,该控制器包含两个导航控制器。iPhone -
被推到第一导航控制器的第一视图是一个表视图。在这个表格视图中,我需要在初始的“下载”视图控制器中显示从API调用中检索到的数据。
可以请人向我解释,我怎么会在“下载”和表视图控制器之间通过这个数据?考虑到他们不了解彼此。
一个重要的注意的是,数据必须加载标签栏控制器之前被取出,所以不能简单地从将要使用它的表视图控制器中获取数据。
答
您的数据从属于应用程序,所以应用程序委托可以保留指向数据的指针,然后这两个视图可以使用[[UIApplication sharedApplication] delegate]
访问它。
另一种选择是与数据消息发送到应用程序委托下载完成时。我假设你已经在做这样的事情,因为你说应用隐藏了视图控制器的视图,而不是视图控制器隐藏自己。它不知何故必须知道下载完成。所以,在下载控制器:
- (void) downloadFinished {
[listener downloadFinished:data];
}
而在你的应用程序代理(在listener
从以前的片段):
- (void) downloadFinished:(NSData *)data {
CustomViewController *c = [[[CustomViewController alloc] initWithData:data] autorelease];
[downloadView removeFromSuperview];
[window addSubview:c.view];
}
凡与加载NIB并保持数据的自定义视图控制器处理由表访问。
我宁愿第二个选项,第一个 - 苹果通常会建议控制器之间传递对象,而不是武断地访问应用程序委托。 – Tim 2009-06-24 04:14:03