Что-то не так с переключением представлений путем установки корневого контроллера представления?

Мне было интересно, если следующий является приемлемым способом для переключения взглядов?

AppDelegate.m

- (IBAction) switchViews
    {
    if (self.window.rootViewController == self.viewController) {
        self.window.rootViewController = self.settingsNavigationViewController;
    } else {
        self.window.rootViewController = self.viewController;
    }
}

И viewController, и settingsNavigationViewController загружаются из nib-файлов при запуске приложения.

Основной вид (viewController) содержит вид прокрутки с 3 видами изображений для бесконечного эффекта прокрутки, а также панель поиска вверху и панель инструментов внизу.

Второй вид для моих настроек приложения. Это навигационный контроллер, который работает аналогично пакету настроек.

Оба представления имеют кнопку, которая вызывает switchViews;

Нужно ли мне реструктурировать свое приложение, или это хороший способ сделать это, или мне нужно реструктурировать мое приложение?

2 ответа

Решение

Хотя это возможно сделать, (документация яблок объясняет здесь и, кажется, не предотвращает это

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html%23//apple_ref/occ/instp/UIWindow/rootViewController

)

это также означает, что ваши существующие представления удалены.

В нем определенно есть какой-то запах кода. Поскольку это диалоговое окно настроек, почему бы не загрузить свой контроллер навигации параметров в модальное представление, как показано ниже (аналогично приведенному ниже). Лично это кажется немного чище и более соответствует тому, что пользователь может ожидать...

[[self.viewController] presentModalViewController:self.settingsNavigationViewController animated:YES];

Я думаю, что вы должны использовать tabbarcontroller.

Другие вопросы по тегам