调用 instantiateviewcontroller 后立即执行 viewdidload
viewdidload executed as soon as instantiateviewcontroller is called
我正在使用 UIStoryboard
的 instantiateviewcontroller
方法从故事板加载 UIViewcontroller
。一旦执行此方法,就会调用 viewDidLoad()
方法,甚至在 initWithCoder
之前。这种行为是不同的,并且与延迟加载相矛盾。
现在,问题是如何在 UIViewcontroller
上设置属性,以便我可以在 viewDidLoad
方法中使用它们?
我没有正确理解你最初的问题。
但我想你想要这样的东西
-(void) loadNewVC {
SampleViewController *sample = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"sample"];
NSData *birthData =[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://iglesiasSite.com"]];
sample.someName = @"Enrique Iglesias";
sample.someData = birthData;
[[[UIApplication sharedApplication] keyWindow] setRootViewController:sample];
}
在 header 中 SampleViewController.h class
@interface SampleViewController : UIViewController
@property (nonatomic, strong) NSString *someName;
@property (nonatomic, strong) NSData *someData;
@end
SampleViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
[self processData: self.someData andName: someName];
}
我正在使用 UIStoryboard
的 instantiateviewcontroller
方法从故事板加载 UIViewcontroller
。一旦执行此方法,就会调用 viewDidLoad()
方法,甚至在 initWithCoder
之前。这种行为是不同的,并且与延迟加载相矛盾。
现在,问题是如何在 UIViewcontroller
上设置属性,以便我可以在 viewDidLoad
方法中使用它们?
我没有正确理解你最初的问题。 但我想你想要这样的东西
-(void) loadNewVC {
SampleViewController *sample = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"sample"];
NSData *birthData =[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://iglesiasSite.com"]];
sample.someName = @"Enrique Iglesias";
sample.someData = birthData;
[[[UIApplication sharedApplication] keyWindow] setRootViewController:sample];
}
在 header 中 SampleViewController.h class
@interface SampleViewController : UIViewController
@property (nonatomic, strong) NSString *someName;
@property (nonatomic, strong) NSData *someData;
@end
SampleViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
[self processData: self.someData andName: someName];
}