1

У меня есть 5 контроллеров представления в моем приложении, проект начинается с NavigationController. Естественно, когда я мог подключить действие для «push» из вида 1 для просмотра 2, у моего представления 2 была бы панель навигации и кнопка «Назад».UINavigationBar исчезает, когда другой вид segue's к нему?

Итак, мой макет выглядит так: 1 ViewController имеет 4 круглые кнопки с кнопками «push» для 4 других видов. Поскольку у меня есть 5, пятый - это дополнительное представление, которое я добавил, и для того, чтобы достичь этой точки зрения, вы должны коснуться круглой прямоугольной кнопки, которую я разместил на 4-м представлении, которое будет «переворачивать горизонтально» на 5-й вид.

Вот проблема: теперь у моего 5-го представления нет панели навигации, и когда я добавляю круглую прямоугольную кнопку на моем 5-м просмотре, чтобы перейти к четвертому виду, теперь я вижу, что панель навигации, которая когда-то была больше не существует.

Я попытался вручную добавить навигационную панель для просмотра 4 & 5, я могу сделать это успешно, но я не могу добавить к ним кнопки «назад», перетащив их. Может кто-нибудь помочь мне решить эту проблему, пожалуйста?

+0

Похоже, вы использовали модальный переход, чтобы добраться до 5-го взгляда, это правильно? –

+0

@SarabyteStudios Да, это правильно, это было руководство segue – vzm

+0

Чтобы сохранить навигационную панель, она должна быть представлена ​​нажатием клавиши. –

ответ

2

Вместо добавления кнопки «Назад» вы можете использовать пользовательский класс segue. Создайте новый файл с именем «flip» и сделайте его подклассом UIStoryBoardSegue. После того как файлы создаются открыть flip.m и вставить этот код выше @end

- (void) perform { 

UIViewController *src = (UIViewController *) self.sourceViewController; 
UIViewController *dst = (UIViewController *) self.destinationViewController; 
[UIView transitionWithView:src.navigationController.view duration:.8 

        options:UIViewAnimationOptionTransitionFlipFromLeft 

       animations:^{ 

        [src.navigationController pushViewController:dst animated:NO]; 

       } 

       completion:NULL]; 

} 

Далее перейдите в раскадровку и выбрать SEGUE из 4 вида на 5-ом. Задайте стиль для пользовательских и установите класс segue: flip

Это позволит вам сохранить навигационную панель и флип-анимацию.

+0

Это отлично работает при переходе с 4-го на 5-е, но когда я применяю один и тот же тип перехода с 5-го по 4-й, навигационная панель в 4-м исчезает @SarabyteStudios – vzm

+0

Извините, я забыл об этом. Тогда лучшим способом было бы сделать его модальным, добавить навигационную панель и проделанную кнопку с действием, которое закроет контроллер модального представления. –

0

Вы можете просто вставить пятый элемент управления ViewController в navigationController. В V VC теперь появится панель навигации. Добавить UIBarButton и связать его с методом, который выполняет следующие действия:

[self.navigationController.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 

Просто для объяснения, навигационный контроллер вашего 5-й View (в тот, который вы внедренный его) теперь будет уволен это presentingViewController

Также , модальный флип-сегг будет фактически переходить к навигационному контроллеру.

Редактирование/Примечание: при выполнении таких переходов мне легче делать программные действия, поэтому вы можете передать что-либо вместе с вашим (5-м) viewController без проблем. В этом случае вы создадите свой V VC, а затем создадите navigationController с 5VC в качестве его корня.

// setup of firstVC 
UIViewController *firstVC = [[UIViewController alloc] initWithNibName:@"firstVC" bundle:nil]; 

// Create the navCon with firstVC as root 
UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:firstVC]; 

// Set it to flip 
[navCon setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 

// Now present it 
[self presentViewController:navCon animated:YES completion:nil]; 

 Смежные вопросы

  • Нет связанных вопросов^_^