我最近尝试使用Xcode中的MainStoryboard.storyboard进行工作,目前进展顺利,我想知道为什么以前从未使用过它。在尝试一些代码时,我遇到了一个障碍,不知道该如何解决。
当我使用自定义init在ViewControllers类中声明并alloc和init一个新的ViewController时,我会像这样做:
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];
在使用故事板(storyboard)的同时如何仍然使用自定义初始化(custom initialization)来创建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;
}
init
方法的方式。 - jowie