Я создаю приложение на основе шаблона Utility из Xcode, к которому я добавил еще несколько представлений. Моя структура приложения будет выглядеть следующим образом:
Я могу правильно перейти от моего основного вида к моему боковому виду, который также является корневым видом контроллера навигации. На моем оборотном виде я нажимаю второй вид моего контроллера навигации (представление «Настройки»), который настроен для отображения UITabBarController, с двумя вкладками, как только он загружается (с viewDidLoad).
Если я удаляю UITabBarController, я могу без проблем вернуться к моему флип-боку, используя «popViewController» из моего вида «Настройки». Проблема возникает, если я загружаю UITabBarController в viewDiDLoad в моем виде «Настройки» ... вкладки работают отлично, но я больше не могу вернуться к своему флип-боковому виду (корневому представлению контроллера навигации).
Я могу вернуться, если использую панель навигации контроллера навигации, но я хочу настроить свои собственные кнопки и скрыть панель навигации.
До сих пор я пробовал следующие методы:
[self.navigationController popViewControllerAnimated: YES];
[self.navigationController popToRootViewControllerAnimated: YES];
[self.navigationController popToViewController: FlipSideViewController animated: YES];
Но, похоже, они не работают. Первые два ничего не делают (экран остается прежним), а третий не распознает «FlipsideViewController» (может быть, потому что это делегат MainViewController?).
Есть ли способ проверить, что именно делает кнопка «назад» на панели навигации, если я ее активирую?
Должен ли я использовать делегатов?
Можно ли вызвать метод popViewController в моем представлении настроек из любого из двух представлений вкладок?
Это мой оборотный взгляд:
- (IBAction)showSettingsView {
SettingsViewController *controller = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
controller.title = @"Settings";
[self.navigationController pushViewController:controller animated:YES];
[controller release];
}
Это мой вид настроек:
- (void)viewDidLoad {
[super viewDidLoad];
tabBarController = [[UITabBarController alloc] init];
Tab1ViewController* vc1 = [[Tab1ViewController alloc] init];
Tab2ViewController* vc2 = [[Tab2ViewController alloc] init];
NSArray* controllers = [NSArray arrayWithObjects:vc1, vc2, nil];
tabBarController.viewControllers = controllers;
[self.view addSubview:tabBarController.view];
}
И метод возврата в одном из представлений Tab:
- (IBAction)backFromTab1View {
[self.navigationController popToViewController:FlipSideViewController animated:YES];
}
Большое спасибо и извините, если вопрос слишком простой!