2015-12-02 4 views
-1

Это действительно должно сработать. Это одна из самых простых вещей для iOS, и по какой-то причине она просто не работает.Переключатель простого вида в iOS

У меня есть два диспетчера представлений в моей раскадровке. Один из них - InitViewController, а другой - ViewController, с идентификатором раскадровки Init и ViewOne соответственно. У меня есть кнопка на InitViewController, которая запускает код для переключения представлений. Код работает нормально, но ничего не происходит, несмотря на этот факт. Вот код:

-(IBAction)NextPage:(id)sender{ 
    ViewController *wc = [[ViewController alloc] 
           initWithNibName:@"ViewOne" 
           bundle:nil]; 

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

} 

Я импортировал ViewController.h, я просто не знаю, почему это не работает.

+0

Является ли ваш контроллер начального представления фактически вложенным в 'UINavigationController'? Это может быть одной из причин, по которым «настоящий» сеанс работает, когда ручной вызов 'pushViewController: анимированный:' нет, поскольку он будет возвращаться к модальному представлению, если он не вложен в контроллер навигации. –

+0

Ну нет ничего удивительного, если он не работал. Является ли контроллер представления верным точным контроллером вида с именем ViewOne? Где находится ваш контроллер? Это в xib или это в раскадровке? –

ответ

0

initWithNibName: предназначен для контроллеров представлений, которые вы создаете в файлах .xib, а не для раскадровки. Для того, чтобы создать контроллер представления из раскадровки использования -[UIStoryboard instantiateViewControllerWithIdentifier:]

ViewController *wc = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewOne"]; 
[self.navigationController pushViewController:wc animated:YES]; 
+1

Вы также можете настроить push-сегу в раскадровке вместо того, чтобы выполнять действие в коде – dan

+0

. Код, как представляется, тоже не делает этого. Я даже попробовал [[UIStoryboard storyboardWithName: @ "Main" bundle: nil] instantiateViewControllerWithIdentifier: @ "ViewOne"]; Что я могу пропустить? Я попробую следующий раз. –

+0

Хорошо, толчок segue работал, но он все еще не идеален. Я бы предпочел динамически настроить кнопку для перехода в разные области на основе предыдущего взаимодействия с пользователем. –

0

Вам нужен NavigationController - попробуйте войти self.navigationcontroller, и вы увидите, null В раскадровке добавить UINavigationController установить его в качестве точки входа, установите InitViewController в качестве контроллера представления корневого и вы можете использовать:

ViewController *wc = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewOne"]; 
[self.navigationController pushViewController:wc animated:YES]; 
Смежные вопросы