Ячейки табличного представления теряют свои данные при выходе из представления с помощью панели навигации - PullRequest
0 голосов
/ 17 мая 2011

У меня есть табличное представление, в котором есть пользовательские ячейки. Моя ячейка табличного представления заполняется значениями, вставленными в базу данных SQLite.

Значения базы данных отображаются в ячейках моего табличного представления, но проблема в том, что при переходе от моего табличного представления к предыдущему и обратно к табличному виду через панель навигации табличное представление становится пустым. В чем может быть проблема?

1 Ответ

1 голос
/ 17 мая 2011

Отредактировано, чтобы предложить более вероятное решение на основе комментариев к этому ответу

Предполагая, что вы добавляете представление входа в систему в качестве модального viewController, вам необходимо обновлять таблицу после каждого дополнительного входа в систему. В вашем viewWillAppear методе перезагрузите ваш tableView:

[tableView reloadData];

Или, если вашей таблице требуется некоторое время для перезагрузки, вы можете отправить уведомление viewController для перезагрузки tableView из представления входа в систему, прежде чем вы отклоните его.


В настоящее время невидимые виды могут быть выгружены по желанию ОС, если объем памяти будет ограничен. Распространенной ошибкой разработки iOS является допущение, что код в методах viewDidLoad и viewDidUnload viewController будет вызываться только тогда, когда представление сначала загружается, а затем выгружается. Убедитесь, что ваш метод viewDidLoad не делает никаких предположений о доступности данных и что ваш метод viewDidUnload не случайно удаляет данные, которые понадобятся вновь вызванному viewDidLoad.

Точно так же убедитесь, что ваш метод viewWillAppear не заблокирован чем-то в вашем методе viewDidUnload.

Наконец, и в том же духе, поймите, что если ваш взгляд сбрасывается ОС из соображений памяти, он иногда будет вызывать ваш viewDidUnload метод, когда он очищает его, но иногда кажется, что не вызывает его, возможно потому память, используемая представлением, была настолько велика, что из-за невозможности очистить его в методе didReceiveMemoryWarning было решено просто немедленно и полностью сбросить представление, не позволяя ему самоочищаться.

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