2011-10-05 83 views
0

我建立一個iPhone應用程序,你知道多個視圖之間切換,但我面臨一個問題,當我在它們之間切換和它是這樣的:如何在不丟失數據的情況下切換UIViews?

第二個視圖,我切換到UITableView和每時間顯示其載入4行,但當我切換到第三個視圖,並嘗試返回到第二個是表的所有行消失。

我的iPhone模板是基於視圖的應用程序。用這樣的搶答之間切換的代碼:

if (self.webController==nil) { 
    SearchWebViewController *d=[[SearchWebViewController alloc] initWithNibName:@"SearchWebViewController" bundle:nil]; 
    self.webController=d; 
    [d release]; 
} 
[UIView beginAnimations:@"flipping view" context:nil]; 
[UIView setAnimationDuration:0.5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp 
         forView:self.view cache:YES]; 
[self.view addSubview:webController.view]; 
[UIView commitAnimations]; 

如何的意見之間切換,保持數據的呢?

任何想法,請和保持它的簡單,儘可能:)

+0

向我們展示UITableView的代碼以及如何創建其數據源。 – Bourne

回答

0

您需要了解的UITableView如何工作的。它不會「記住」顯示的行,而是在您滾動或隱藏然後重新顯示錶時,爲每個需要顯示的行調用cellForRowAtIndexPath。

因此,您必須保留所顯示或可能顯示的所有行的「備份副本」 - 無論是在屏幕上還是在頂部或底部滾動的那些行。

通常這個「備份副本」是NSMutableDictionaries或自定義對象的NSMutableArray,每個代表一行。當調用cellForRowAtIndexPath時,您可以訪問「備份副本」中的值並創建一個單元格來顯示數據。如果單元格中的內容發生更改,則將該更改複製到「備份副本」。

相關問題