InstantiateViewControllerWithIdentifier - идентификатор раскадровки, но все еще не работает

Мне нужно создать segue программно, однако, когда я нажимаю на кнопку, контроллер просмотра не меняется на следующий, идентификатор раскадровки установлен и все еще не работает. Я пропустил какие-либо другие проверки, чтобы сделать эту работу?

Смотрите код ниже:

EntryViewController *entryController = [self.storyboard instantiateViewControllerWithIdentifier:@"go"];
[self.navigationController pushViewController:entryController animated:YES];

его сводит меня с ума. Благодаря

Ответы

Ответ 1

Внутри моего viewDidLoad я поместил кнопку, которая вызывает goldStarOpen:

UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeCustom];
btnTwo.frame = CGRectMake(250, 20, 40, 40);
[btnTwo addTarget:self action:@selector(goldStarOpen) forControlEvents:UIControlEventTouchUpInside];
[btnTwo setImage:[UIImage imageNamed:@"GoldStar.png"] forState:UIControlStateNormal];
[self.view addSubview:btnTwo];

Внутри goldStarOpen У меня есть код, который почти идентичен вашему.

- (void)goldStarOpen
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:
                                @"MainStoryboard" bundle:[NSBundle mainBundle]];
    UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"GoldStar"];
    [self presentViewController:myController animated:YES completion:nil];
}

goldStarOpen активирует ViewController в раскадровке.

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

enter image description here

Ответ 2

Использование

 + (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil. 

Итак, попробуйте это

self.storyboard=[UIStoryboard storyboardWithName:@"Your_Story_Board_Name" bundle:[NSBundle mainBundle]];
EntryViewController *entryController = [self.storyboard instantiateViewControllerWithIdentifier:@"go"];
[self.navigationController pushViewController:entryController animated:YES];

Ответ 3

попробуйте это Раскадровка Выберите UIViewController- > Xcode- > Editor- > Emabed In- > Контроллер навигации

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"YourStoryboard"
                                                         bundle: nil];

YourViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier: @"YourViewController"];
[self.navigationController pushViewController:vc animated:YES];

Ответ 4

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

 UIStoryboard *    storyboardobj=[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

 EntryViewController *entryController = [storyboardobj instantiateViewControllerWithIdentifier:@"go"];
[self.navigationController pushViewController:entryController animated:YES];

Ответ 5

Вы не можете установить контроллеры вида storyboard. Это только чтение и установка при создании контроллера представления. Вместо этого вам нужно будет получить раскадровку из другого места или загрузить ее.

Вы можете получить раскадровку из контроллера корневого представления AppDelegate. Или используйте + (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil.