popToViewController в приложении CoreData - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть приложение CoreData с MainView UITableViewController, в котором находятся все элементы в списке.То, что я пытаюсь сделать, это добавить пользовательскую кнопку возврата и использовать popToViewController:animated: для доступа к настройкам.Когда я пытаюсь использовать этот метод, приложение вылетает.После обширного чтения я понял, что push и pop используют стек NSArray для контроллеров представления.Например, rootView - это представление 0, когда вы используете pushToViewController:animated:, оно добавляется в другом представлении, 1 и так далее.Это все имело смысл.Я узнал, что вы не можете получить доступ к представлению, которое не загружается в стек после корневого представления.Моя цель здесь - открыть окно настроек.Когда я изменяю код в AppDelegate.m, чтобы сделать SettingsViewController rootViewController, UITableViewController больше не функционирует, он не может сказать, что сущность enityName не может быть инициализирована.Есть ли способ, чтобы часть приложения в CoreData работала правильно и по-прежнему работала с настройками?Я думал об использовании модального вида, но это разрушает стиль приложения.

Мне было довольно сложно объяснить, если вы не поняли ничего из этого, дайте мне знать.Спасибо за вашу помощь.

Обновление : я прочитал в документации по UINavigationBar, что вы можете использовать - (void)setItems:(NSArray *)items animated:(BOOL)animated, что позволяет вам вручную устанавливать массив контроллеров представления push и popping.Я просто не могу понять, как это сделать.Я просмотрел пример кода appleDown, но в нем не было нужной мне функциональности.

1 Ответ

1 голос
/ 06 сентября 2011

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

Представление, находящееся за пределами этой иерархии (кажется, ваше Представление настроек относится к этой категории) действительно должно быть представлено модально.На iPad вы можете даже использовать симпатичные и удобные UIPopOverController s.

. Конечно, если вы хотите сохранить свой собственный внешний вид (создавая опасность для запутывания ваших пользователей), вы можете возиться санимация перехода.Вы можете использовать собственное и, таким образом, предварительно одобренное свойство UIModalTransitionStyle UIViewController s.

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

[self.navigationController pushViewController:controller animated:YES];

и

[self.navigationController popViewControllerAnimated:YES];

, а не более подверженные ошибкам версии pushToViewController и popToViewController.

...