Подтвердить что ты не робот

PushViewController выводит на черный экран

SettingsViewController *viewController = [[SettingsViewController alloc] init];
    [[self navigationController] pushViewController:viewController animated:YES];

При использовании этого кода в NavigationController показан показан только черный экран. В раскадровке он показывает контент, но он не отображается на телефоне.

4b9b3361

Ответ 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;
    }
}