Недавно я попробовал работать с MainStoryboard.storyboard в Xcode и пока все идет неплохо, и мне интересно, почему я никогда не использовал его раньше. Во время игры с некоторым кодом я столкнулся с препятствием, и я не знаю, как это разрешить.
Когда я выделяю и запускаю новый ViewController (с пользовательским init, объявленным в классе ViewControllers), я бы сделал что-то вроде этого:
ViewController *myViewController = [[ViewController alloc] initWithMyCustomData:myCustomData];
Затем после этого я мог сделать что-то вроде:
[self presentViewController:myViewController animated:YES completion:nil];
Когда я работаю с раскадрой, мне стало известно, что для перехода на автономный ViewController требуется Идентификатор.
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewController *myViewController = [storyboard instantiateViewControllerWithIdentifier:@"MyViewControllerIdentifier"];
[self presentViewController:myViewController animated:YES completion:nil];
Как я могу использовать свою пользовательскую инициализацию для myViewController при использовании раскадровки?
Можно ли просто сделать что-то вроде этого:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewController *myViewController = [storyboard instantiateViewControllerWithIdentifier:@"MyViewControllerIdentifier"];
myViewController.customData = myCustomData;
[self presentViewController:myViewController animated:YES completion:nil];
//MyViewController.m
- (id) initWithMyCustomData:(NSString *) data {
if (self = [super init]) {
iVarData = data;
}
return self;
}