Нажав на контроллер из подпредставления - PullRequest
0 голосов
/ 05 марта 2012

По сути, как правильно выдвигать новый контроллер вида из подчиненного вида контроллера навигации.

Проблема в том, что подпредставления навигационного представления не наследуют self.navigationController (его nil)

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

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

Также:

AppDelegate *del = (AppDelegate *)[UIApplication sharedApplication].delegate
[del.navigationController pushViewController:vc animated:YES];

Не работает, так как контроллер делегатов nil.

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Вы можете попробовать два способа
1. Используйте супервизор superViewController для управления вашим viewController.
2. Вставьте ваш текущий viewController в NavigationController, чтобы навигационный контроллер не был nil

1 голос
/ 05 марта 2012

Создайте следующую категорию в UIView.

@interface UIView (GetUIViewController)
- (UIViewController *)viewController;
@end

@implementation UIView (GetUIViewController)

- (UIViewController *)viewController;
{
    id nextResponder = [self nextResponder];
    if ([nextResponder isKindOfClass:[UIViewController class]]) {
        return nextResponder;
    } else {
        return nil;
    }
}
@end

Теперь получите SuperView из подпредставления.

mySuperView = [mySubView superview];

Затем вызовите метод из созданной категории.

mySuperViewController = [mySuperView viewController];

Теперь, используя этот viewController, вы можете получить доступ к navigationController.

Я не пробовал вышеуказанный код и подход, но я надеюсь, что он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...