Как переключаться между UIViews без потери данных? - PullRequest
0 голосов
/ 06 октября 2011

Я создаю приложение для iphone, и вы знаете, что для переключения между ними существует несколько представлений, но я сталкиваюсь с проблемой, когда я переключаюсь между ними и вот так:

Второе представление, на которое я переключаюсь, имеет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];

Как переключаться между представлениями и сохранять в них данные?

Любая идея, пожалуйста, и сделайте ее максимально простой.:)

1 Ответ

0 голосов
/ 06 октября 2011

Вы должны понимать, как работает UITableView.Он не «запоминает», какие строки отображаются, но вызывает cellForRowAtIndexPath для каждой строки, которую нужно отобразить, когда вы прокручиваете или скрываете, а затем снова отображаете таблицу.

Таким образом, вы должны хранить «резервную копию» всех строк, которые вы отображаете или можете отображать - как на экране, так и на прокручиваемых сверху или снизу.

Обычно это«резервная копия» - это NSMutableArray из NSMutableDictionaries или пользовательских объектов, каждый из которых представляет одну строку.Когда вызывается cellForRowAtIndexPath, вы получаете доступ к значениям в «резервной копии» и создаете ячейку для представления данных.Если что-то изменилось в ячейке, вы копируете это изменение в «резервную копию».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...