У Xcode есть шаблон, который очень близок к тому, что вы делаете. Исходя из результатов, я не думаю, что вы должны пытаться выполнить [self.navigationController presentModalViewController: vc] и [self.navigationController dismissModalViewControllerAnimated:], а скорее просто [self presentModalViewController:] и [self dismissModalViewControllerAnimated:.
Чтобы увидеть, как шаблон делает это для себя, вы можете использовать мастер нового проекта в xcode 4.3. возможно, это даст некоторые рекомендации:
из этого выбора, нажмите Далее, затем дайте имя своему тестовому проекту, выберите «Универсальный», выключите автоматический подсчет ссылок, нажмите «Далее», сохраните, где вы хотите.
Теперь нажмите на цель и переключите цель развертывания на 4.3 (или 4.0, если хотите) для целей тестирования и переключитесь на ваше устройство или симулятор iOS 4.3.
наконец, замените следующий код в applicationDidFinishLaunching: withOptions: в созданном AppDelegate.m:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.mainViewController = [[[MainViewController alloc] initWithNibName:@"MainViewController_iPhone"
bundle:nil] autorelease];
} else {
self.mainViewController = [[[MainViewController alloc] initWithNibName:@"MainViewController_iPad"
bundle:nil] autorelease];
}
UINavigationController* navigationController
= [[UINavigationController alloc] initWithRootViewController:self.mainViewController];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
return YES;
Теперь, когда я запускаю это, он не скрывает панель навигации. и в созданном MainViewController.m из шаблона вы увидите, как он представляет модальный контроллер представления и удаляет его из самого контроллера, а не из контроллера навигации. чтобы сделать шаблонный код более похожим на ваш собственный, перейдите в MainViewController.m и удалите строку, которая задает стиль перехода контроллера модального вида ...
(конечно, в iOS 5 с раскадровками то же самое может быть достигнуто с помощью модальных сегментов ... вот как я это сделал для приложений, которые я не поддерживаю для pre-5.0, которые представляют modalViewController таким образом.)