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
.