0

Я создаю приложение на основе шаблона Utility из Xcode, к которому я добавил несколько видов. Моя структура приложения будет выглядеть следующим образом:popView от UITabBarController внутри UINavigationController

  • MainView (меню приложения)

    • вид Флип стороне (калькулятор)

    • UINavigationController

    • Настройки просмотра

      • viewDiDLoad: UITabBarController

         - Tab1 view (options) 
             - Tab2 view (information text) 
        

я могу правильно перемещаться от моего MainView на мой взгляд Флипа стороны, которая является также видом корня навигации контроллера. С моего флип-бокового представления я нажимаю второй вид моего контроллера навигации (представление настроек), который настроен для отображения UITabBarController с двумя вкладками, как только он загружается (с помощью viewDidLoad).

Если я удалю UITabBarController, я могу без проблем вернуться к своему взгляду на Flip-стороне, используя «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]; 
} 

Большое спасибо и извините, если вопрос слишком прост!

ответ

0

Я на самом деле решить эту проблему, создавая свой собственный UINavigationBar в окне настройки и используя:

[self.view insertSubview:tabBarController.view belowSubview:myNavigationBar]; 

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

Мне потребовалось некоторое время, чтобы понять различия между «addSubview» и «inserSubview + belowSubview». Извини за это!