Как установить Superview со стороны делегата? - PullRequest
0 голосов
/ 06 августа 2011

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

1 Ответ

1 голос
/ 06 августа 2011

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

Делегат приложения .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].

...