2012-02-10 2 views
0

Мое приложение начинается с представления с помощью некоторых кнопок. Я хочу перейти к различным представлениям в зависимости от нажатой кнопки и передать им разные параметры.Перемещение между представлениями, встроенными в NavigationController, с помощью кнопок в Storyboard

Мой раскадровка выглядит следующим образом:

enter image description here .

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

Сначала я не знаю, выбрал ли я правильный подход, или если я должен начать свое приложение с контроллера навигации вместо представления (я пробовал это решение, но на своей домашней странице Я не хочу панель навигации, а также делает ее видимой или нет, на самом деле не очень приятно визуально).

В случае подтверждения возможности моего первоначального подхода, как я могу перейти к нужному виду, передав некоторые параметры?

------ Edit:

я, наконец, нашел рабочий раствор. Контроллер навигации является первым контроллером в моем приложении. Представления связаны со стандартным отступлением.

В моем домашнем зрении:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [[self navigationController] setNavigationBarHidden:YES animated:YES]; 
} 

На моем взгляде таблицы:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [[self navigationController] setNavigationBarHidden:NO animated:YES]; 
} 

Таким образом, когда вы нажимаете на кнопку, новый вид отображается с анимацией, то есть то же самое на панели навигации. То же самое происходит, когда вы нажимаете кнопку «Назад» в виде таблицы.

Больше никаких строк кода не требуется !!!

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

Яс

ответ

1

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

Так стек вид контроллеры будет выглядеть следующим образом:

Storyboards - HomeViewController - YourTableViewController

Если вы хотите, чтобы скрыть панель навигации в домашней странице вам просто нужно, чтобы скрыть/показать его от код с помощью:

[self.navigationController setNavigationBarHidden:YES animated:NO]; 

и когда вы хотите, чтобы показать его в использовании контроллера представления:

[self.navigationController setNavigationBarHidden:NO animated:NO]; 

Эти строки кода должны перейти к методам, связанным с отображением вида, т.е.viewDidAppear: или к prepareForSegue: метод

EDIT: Я также добавил в мое приложение некоторая задержка в продвижении на следующий контроллер представления:

[self.navigationController setNavigationBarHidden:NO animated:YES]; 

    // Showing navigation bar animation 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{ 
     [self.navigationController pushViewController:viewController animated:YES];   
    }); 
+0

Как я уже писал, я уже пытался это решение: я ve попытался скрыть панель навигации в ViewWillAppear домашнего вида и показать ее в ViewWillAppear в виде таблицы. Действительно уродливый эффект !!! :( – yassassin

+0

В моем случае этого было достаточно, чтобы добавить некоторую задержку в представлении следующего контроллера представления (в вашем случае контроллер табличного представления). Я сделал это, как в коде, который я поставил выше, так как отредактировал – krzymar

+0

никакой задержки, необходимой для меня, проверьте обновленный вопрос! Спасибо вам больше! – yassassin

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