NSKeyedUnarchiver + UITableViewController не работает правильно - PullRequest
0 голосов
/ 07 ноября 2010

Я пытаюсь использовать NSKeyedArchiver для сохранения состояния моего UITabBarController. Внутри вкладок находятся UINavigationControllers, которые содержат UITableViewControllers.

Архивирование работает без проблем.

При разархивировании у меня возникают странные проблемы с моими UITableViewControllers. initWithCoder: вызывается правильно, и первое, что я делаю внутри, это вызов [super initWithCoder:]

TableView, по-видимому, правильно воссоздан, и для него уже установлены делегат и свойство dataSource. Если мой initWithCoder: ничего не делает, только вызывает super и возвращает self, тогда мое табличное представление оказывается пустым, и мои методы делегата не вызываются. Если я подключаю делегат и свойства dataSource к self.tableView, я вижу свое содержимое правильно, но didSelectRowAtIndexPath не вызывается при выборе, и в одном случае я не могу прокрутить, пока tableView не будет перезагружен.

Если в initWithCoder: я создаю новый UITableView, все работает, но я не верю, что мне нужно это делать.

Я делаю что-то, чего не должно быть при попытке сделать это, или я упускаю что-то очевидное, что мне нужно добавить, чтобы все работало правильно?

Обновление: установка self.tableView = [decoder decodeObjectForKey:@"tableView"] внутри моего контроллера, похоже, решает проблему прокрутки / выбора, но в результате tableView всегда UITableViewStylePlain и все равно кажется неправильным, поскольку свойство уже установлено.

1 Ответ

0 голосов
/ 08 ноября 2010

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

...