2013-08-05 24 views
0

從視圖控制器和表視圖加載內容到視圖控制器的內容會更有效嗎?從表視圖的視圖控制器的詳細視圖中加載內容會更有效嗎?

我應該將變量傳遞給didSelectRowAtIndexPath:方法的詳細視圖,還是更好地對服務器進行JSON調用並將數據加載到詳細視圖的字典中?

我注意到有些滯後,當我通過didSelectRowAtIndexPath:方法通過從視圖控制器的詳細視圖中的數據

感謝您的幫助

+0

在視圖控制器中加載所有數據並在詳細視圖控制器中傳遞選定的索引數據。 –

回答

0

如果你已經在表視圖控制器本身已經完整的數據,那麼你可以傳遞一個對象,而不是傳遞太多的變量。只需創建一個域類,聲明變量和對象,設置屬性並進行合成。現在將這個域類對象傳遞給你的控制器。 但是,如果您在表視圖中有一些數據,並且您需要進行服務器調用以獲取更多詳細信息,則可以僅傳遞id並僅在Detail View上進行服務器調用。

0

這不是從你的問題,其中的數據是來自完全清楚。我假設你是因爲你提到了一個JSON調用,當你在你的表視圖上選擇一個項目時,你需要進行一次web服務調用以在顯示你的詳細視圖之前獲取關於該項目的附加信息。

如果是這種情況,那麼您應該進行Web服務調用並在詳細視圖控制器中加載數據。 Apple的界面指南建議您按照這種方式進行響應。詳細視圖控制器將在表格視圖中的行被點擊之後立即顯示。您可以在詳細信息視圖中使用活動指示器或加載圖形,讓用戶知道正在下載其他信息。

這是一個相當好的經驗,比等待數據下載,只有然後觸發您的視圖轉換。

+0

因此,我應該只將記錄標識傳遞給詳細視圖,然後調用Web服務獲取所有數據?此刻,我將數據從表視圖傳遞給了didSelectRow方法中的詳細視圖detailViewController.titleStr = [[publicDataArray objectAtIndex:indexPath.row] objectForKey:@「title」]; – user2588945

+0

是的,將記錄ID傳遞給詳細視圖控制器,並讓詳細視圖控制器把手從您的服務中提取附加信息。 – lxt

0

使用didSelectRowAtIndexPath:方法發送ID或任何唯一的變量detailedViewController ...在detailedViewController利用這一獨特的變量或ID來獲得viewDidLoad:從JSON數據或viewWillAppear:這很容易和detailedViewController

發佈數據最好的方法
0
DetailView = [[DetailViewController]alloc]init]; 
DetailView.strValue = sValue. 
[self.navigationController pushViewController:DetailView animated:Yes]; 

DetailView是您詳細視圖的對象。導入這個類然後像上面那樣創建它的實例,並且strValue是在詳細視圖中獲取的字符串,並且sValue是當前視圖控制器中的字符串,它將一些值傳遞給其他視圖。

也檢查此link也。

+0

謝謝!這就是我目前所做的。那麼,將數據從一個vc傳遞到另一個vc並沒有必要再次在詳細視圖中下載並解析它? – user2588945

相關問題