2014-06-05 10 views
1

В моем приложении мне нужно перейти к другому UIViewController нажатием кнопки, но когда я это сделал в новом UIViewController, он отображает только то, что я установил программным путем.Перейти к другому Viewcontroller

я использовал:

NewSubject *NewS = [[NewSubject alloc] initWithNibName:nil bundle:nil]; 
[self presentViewController:NewS animated:YES completion:nil]; 

"NewSubject" является UIViewController мне нужно идти тоже, но я хочу, чтобы компьютер отображать также материал, который я установленный Storyboard.

+2

Используйте раскадровку, чтобы создать экземпляр своего контроллера просмотра, если вы хотите его раскадровку. ('instantiateViewControllerWithIdentifier:') –

+0

используйте эту ссылку, это надежда для u http://stackoverflow.com/questions/23102978/swrevealviewcontroller-without-using-navigationcontroller/23105142#23105142 –

ответ

1

Вы установили в Storyboard в контроллере представления NewSubject на третьей вкладке (Показать идентификационный инспектор) идентификатор StoryBoard ID?

Вы должны установить его на некоторое имя, например, "NewSubject" и использовать его следующим образом:

NewSubject *NewS = [self.storyboard instantiateViewControllerWithIdentifier:@"NewSubject"]; 
[self.navigationController pushViewController:NewS animated:YES]; 
+0

Как это поможет? Они используют раскадровки, а не перья. Поэтому им нужно использовать 'instantiateViewControllerWithIdentifier:' – Popeye

+0

Правда, отредактировал ответ, спасибо. – Alexandre

+0

Я бы, вероятно, сделал 'NewSubject * newS = (NewSubject *) [self.storyboard instantiateViewControllerWithIdentifier: @" NewSubject "];' обратите внимание на строчную переменную 'newS', это придерживается условных обозначений и замечает приведение к' NewSubject' класс. – Popeye

0

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

Если вы используете раскадровку, -initWithNibName:bundle: - неправильный метод использования. Вы можете использовать метод -instantiateViewControllerWithIdentifier: UIStoryboard для создания нового контроллера представления, который определен в раскадровке, но более типичный подход заключается в том, чтобы ваша кнопка запускала сегмент между двумя контроллерами представления.

Попробуйте это:

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

В простых случаях, все готово - нет необходимости писать какой-либо код только для того, чтобы переход произошел. Segue заботится о создании нового контроллера представления и выполнении перехода для вас. Однако вы часто хотите передать некоторые данные из существующего контроллера представления в новый. Если это так, реализуйте -prepareForSegue:sender: в существующем контроллере представления - этот метод дает вам возможность передавать любые данные, которые вам нужны. Это будет выглядеть примерно так:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // It doesn't hurt to check that it's the segue that you expect 
    if ([segue.identifier isEqualToString:@"MySegueIdentifier"]) { 
     NewViewController *newVC = segue.destinationViewController; 
     // This is your chance to set properties or call methods to pass data to the new view controller 
     newVC.foo = self.foo; 
     newVC.bar = self.bar; 
    } 
} 
Смежные вопросы