Имейте UINavigationController, автоматически адаптирующийся к тому, как он представлен - PullRequest
0 голосов
/ 19 октября 2011

Я работаю над контроллером представления, который может быть представлен модально или помещен в стек навигации.Я сделал его подклассом UINavigationController, чтобы получить все UIToolbar бесплатно.Я могу представить его модально, используя:

[self presentModalViewController:myViewController animated:YES];

Проблема в том, что UINavigationController не позволяет вставить в него еще один UINavigationController (имеет смысл), поэтому это приводит к сбою:

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

Был бы способ обнаружить, как представляется myViewController, и автоматически переключать его между UINavigationController и UIViewController соответственно, чтобы мне не понадобилось 2 разных класса?

Другими словами,myViewController сможет обнаружить, как он будет представлен, и подтолкнуть его к следующему:

[self.navigationController pushViewController:myViewController.topViewController animated:YES];


ПРИМЕЧАНИЕ : что-то подобное, вероятно, подойдет, но оно становитсяслишком далеко от поведения UIViewController по умолчанию:

[myViewController pushIntoNavigationController:navController]; // only push myViewController.topViewController
[myViewController presentModallyInParentController:parentController]; // push the whole myViewController

1 Ответ

1 голос
/ 19 октября 2011

В подклассе myViewController создайте метод, подобный следующему:

- (void)presentFromViewController:(UIViewController *)presentingViewController
{
    if ([[presentingViewController class] isEqual:[UINavigationController class]])
        [presentingViewController pushViewController:self.topViewController animated:YES];
    else
        [presentingViewController presentModalViewController:self animated:YES];
}

Будет ли это работать или я не правильно понимаю?

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