iPhone - как добавить навигационный контроллер в представление? - PullRequest
2 голосов
/ 12 мая 2011

В настоящее время у меня есть приложение, которое выполняет следующее:

S: Загружает представление в качестве экрана входа в систему для начала.

a: Если вход выполнен успешно, я добавляю экран условий и положений в качестве подпредставления

b: Если не удалось, я добавляю форму регистрации в качестве подпредставления

F: Затем я загружаю основную часть моего приложения при успешном выполнении любого из a или b, который является частью приложения, где есть контроллер навигации и контроллер панели вкладок. Это настроено в MainWindow.xib

S , a и b также имеют навигационные панели, но не имеют контроллеров навигации, поскольку я не думал, что мне понадобится управление навигацией на экранах входа в систему.

Однако, как я понимаю, я хочу иметь возможность вернуться назад с a и b на начальный экран входа в систему.

Я пробовал несколько способов сделать это, включая следующие ответы:

Как добавить контроллер навигации в приложение View Based в iPhone?

Как правильно настроить вторичный вид для поддержки контроллера навигации на iPhone?

как добавить навигационный контроллер программно?

Но ни один из них не работает для меня, они отображают новый контроллер Navigation на экране входа в систему и не загружают экраны a или b.

Я предполагаю, что это потому, что я добавляю их в качестве подпредставлений в свой loginView, и это не правильный способ сделать это? Мой код выглядит следующим образом:

 if(self.tcSubViewController == nil){

        TCSubViewController *_tcSubViewController = [[TCSubViewController alloc] initWithNibName:@"T&CView" bundle:[NSBundle mainBundle]];

        self.tcSubViewController = _tcSubViewController;

        [_tcSubViewController release];

    }
 [self.view addSubview:[tcSubViewController view]];

Я предполагаю, что есть фундаментальный недостаток в том, как протекает мой логин? Я должен иметь возможность полностью удалить LoginView, а затем отобразить представление «Условия» без необходимости добавлять его в качестве подпредставления, не так ли?

Ответы [ 2 ]

3 голосов
/ 12 мая 2011

Вам необходимо закрыть навигационный контроллер, чтобы вернуться к.Чтобы отклонить модальное представление:

1.Легкий способ. В модальном представлении в каком-либо методе, который вы вызываете для отклонения, просто добавьте:

[self.navigationController dismissModalViewControllerAnimated: YES];

2. Более сложный способ: реализовать и делегировать протокол для вашего модального представления и сделать контроллер представления, который представляет модальное представление, его делегатом.А в методе делегата отклонить модальное представление.Я делаю это так, когда мне нужно отправить данные из модального представления в контроллер, который их представляет.

Ссылка на этот пост

3 голосов
/ 12 мая 2011

Философия контроллера навигации заключается в том, что вы добавляете только navigationController.view в качестве подпредставления UIWindow, и все остальное будет работать самостоятельно. Вам нужно всего лишь нажать / выдвинуть viewControllers, и их соответствующие представления будут автоматически добавлены / удалены с экрана.

пример кода из моего текущего приложения:

HomeController *homeController = [[[HomeController alloc] init] autorelease];
self.controller = [[[UINavigationController alloc] initWithRootViewController:homeController] autorelease];
self.controller.navigationBarHidden = YES;
[self.window addSubview:self.controller.view];
[self.window makeKeyAndVisible];

, а затем для перехода к следующему виду, просто добавьте следующий контроллер:

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