我构建了一个iphone应用程序,你知道多个视图可以在它们之间切换,但是当我在它们之间切换时我遇到了一个问题:
我切换到的第二个视图有一个UITableView,每次显示它加载了4行,但是当我切换到第三个视图并尝试返回第二个视图时,所有行都消失了。 / p>
我的iPhone模板是基于视图的应用。用于在vies之间切换的代码如下:
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 :(得分:0)
您需要了解UITableView的工作原理。它不会“记住”显示哪些行,而是在您滚动或隐藏然后重新显示表时,为需要显示的每一行调用cellForRowAtIndexPath。
因此,您必须保留所显示或可能显示的所有行的“备份副本” - 屏幕上的那些行以及从顶部或底部滚动的那些行。
通常这个“备份副本”是NSMutableDictionaries或自定义对象的NSMutableArray,每个对象代表一行。调用cellForRowAtIndexPath时,可以访问“备份副本”中的值并创建一个单元格来显示数据。如果在单元格中更改了某些内容,则将该更改复制到“备份副本”。