Как установить Superview со стороны делегата?

У меня есть странный шаблон дизайна для одного из моих апов, где у меня есть панель инструментов, которая действует как панель вкладок. По сути, я добавляю эту панель инструментов ко всем моим контроллерам представления, а сама панель инструментов содержит указатели на 3 различных контроллера навигации в моем приложении. Когда нажата одна из кнопок панели инструментов, она сможет удалить контроллер навигации, который в данный момент находится в окне, и добавить тот, который выбрал пользователь. Моя проблема в том, что я не уверен, как добавить новый navcontroller в суперпредставление. Могу ли я создать экземпляр объекта делегата приложения и добавить его к этому? Или мне нужно отправить указатель от моего делегата приложения на панель инструментов в виде переменной класса? Любая помощь будет оценена.

1 ответ

Решение

Мне кажется, что лучший способ сделать это - управлять своим UINavigationController переключение в вашем приложении делегата. Вы также можете позаботиться обо всем, что вам нужно сделать во время этого процесса. Если есть конечное число UINavigationControllerЕсли меня отключат, у меня может быть несколько способов позаботиться об этом:

Файл делегата приложения.h:

@property (nonatomic, retain) UINavigationController *currentNavController;

Файл делегата приложения.m:

    @synthesize currentNavController = _currentNavController;

    - (void)loadNavControllerOne
    {
        self.currentNavController = ...; // Set up your new controller
        self.window.rootViewController = self.currentNavController;
    }

    - (void)loadNavControllerTwo
    {
        // Similar to -(void)loadNavControllerOne
    }

Сокращенный, но вы поняли идею. Это изменится, если вам нужно разделить состояние между этими контроллерами. Вы?

РЕДАКТИРОВАТЬ: Чтобы получить доступ к делегату приложения, позвоните [[UIApplication sharedApplication] delegate],

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