2009-06-23 47 views
0

我建立,通過加載它通過API調用獲取數據的陣列的「下載」視圖控制器開始一個應用程序傳遞兩個非相鄰控制器之間的陣列。數據返回後,應用程序將隱藏此視圖控制器的視圖,並加載一個標籤欄控制器,該控制器包含兩個導航控制器。iPhone -

被推到第一導航控制器的第一視圖是一個表視圖。在這個表格視圖中,我需要在初始的「下載」視圖控制器中顯示從API調用中檢索到的數據。

可以請人向我解釋,我怎麼會在「下載」和表視圖控制器之間通過這個數據?考慮到他們不瞭解彼此。

一個重要的注意的是,數據必須加載標籤欄控制器之前被取出,所以不能簡單地從將要使用它的表視圖控制器中獲取數據。

回答

1

您的數據從屬於應用程序,所以應用程序委託可以保留指向數據的指針,然後這兩個視圖可以使用[[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並保持數據的自定義視圖控制器處理由表訪問。

+0

我寧願第二個選項,第一個 - 蘋果通常會建議控制器之間傳遞對象,而不是武斷地訪問應用程序委託。 – Tim 2009-06-24 04:14:03