调用instantiateviewcontroller后立即执行viewdidload

时间:2016-03-04 13:07:29

标签: ios uistoryboard viewdidload

我使用UIViewcontroller instantiateviewcontroller方法从故事板加载UIStoryboard。执行此方法后,即使在viewDidLoad()之前,也会调用initWithCoder方法。这种行为是不同的,与延迟加载相矛盾。

现在,问题是如何在UIViewcontroller上设置属性,以便我可以在viewDidLoad方法中使用它们?

1 个答案:

答案 0 :(得分:0)

我没有正确理解你的初步问题。 但我认为你想要这样的东西

-(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];
}

在SampleViewController.h类的标题中

@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];
}