PushViewController выводит на черный экран
SettingsViewController *viewController = [[SettingsViewController alloc] init];
[[self navigationController] pushViewController:viewController animated:YES];
При использовании этого кода в NavigationController показан показан только черный экран. В раскадровке он показывает контент, но он не отображается на телефоне.
Ответы
Ответ 1
Попробуйте следующее:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
SettingsViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"setting"];
[self.navigationController pushViewController:viewController animated:YES];
Установите идентификатор элемента настройкиviewview в значение "setting"
Ответ 2
Используйте это:
SettingsViewController *viewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:[NSBundle mainBundle]];
[[self navigationController] pushViewController:viewController animated:YES];
Ответ 3
Легкий способ сделать это - создать экземпляр с помощью раскадровки. Вы должны дать своему viewcontroller идентификатор раскадровки, а затем использовать следующий код:
YourView *view = [self.storyboard instantiateViewControllerWithIdentifier:@"YourViewID"];
Когда это будет сделано, просто нажмите:
[[self navigationController] pushViewController:view animated:YES];
Надеюсь, что это поможет.
Ответ 4
попробуйте это
SettingsViewController *viewController = [[SettingsViewController alloc]initWithNibName:@"SettingsViewController" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:viewController animated:YES];
Ответ 5
Я решил эту проблему путем пользовательской инициализации контроллера представления назначения.
Контроллер вида назначения:
-(id) initWithSender:(UINavigationController*)sender
{
self=[sender.storyboard instantiateViewControllerWithIdentifier:@"DestinationVCIdentifier"];
if (self) {
//custom initialisation
}
return self;
}
И используя его:
DestinationVC *viewController = [[SettingsViewController alloc] initWithSender:self.navigationController];
[[self navigationController] pushViewController:viewController animated:YES];
Ответ 6
Привет. Вы должны установить свойство верхнего бара (панель навигации) на вывод для контроллера вида. В моем случае я ранее устанавливал верхний бар как "прозрачную навигационную панель"
Обычно это происходит, когда вы выполняете segue с модального контроллера.
Ответ 7
чтобы вы могли инициализировать использование имени xib или раскадровки, как все предлагают, и это действительно.
Хотя если вы используете раскадровки и ваш исходный контроллер view находится на раскадровке, они, возможно, скорее сделают следующее,
// Method in your initial viewcontroller
- (void)youPushMethod {
// Name your segue on your storyboard, e.g. SegueIndentifier
[self performSegueWithIdentifier:@"SegueIndentifier" sender:self];
}
Затем
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"SegueIndentifier"]) {
SettingsViewController *settingsViewController= segue.destinationViewController;
}
}