我使用instantiateviewcontroller
方法UIStoryboard
從故事板加載UIViewcontroller
。只要執行此方法,即使在initWithCoder
之前調用viewDidLoad()
方法。這種行爲是不同的,並與延遲加載相矛盾。儘快調用instantiateviewcontroller即可執行viewdidload
現在,問題是如何在UIViewcontroller
上設置屬性,以便我可以在viewDidLoad
方法中使用它們?
我使用instantiateviewcontroller
方法UIStoryboard
從故事板加載UIViewcontroller
。只要執行此方法,即使在initWithCoder
之前調用viewDidLoad()
方法。這種行爲是不同的,並與延遲加載相矛盾。儘快調用instantiateviewcontroller即可執行viewdidload
現在,問題是如何在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];
}
在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];
}
這正是我正在做的,但只是在第一行SampleViewController * sample = [[UIStoryboard storyboardWithName:@「Main」bundle:nil] instantiateViewControllerWithIdentifier:@「sample」];'執行,viewDidLoad在裏面你會發現self.someData和self.someName是零,因爲它們還沒有被setter設置。 –
@NishitGoenka我認爲你應該提供一個示例項目,上傳到github,讓人們看到這裏的全貌。否則,我不明白爲什麼Mr.Fingers的答案在任何方面都不正確。 –
我和Fingers先生在這裏寫的完全一樣。問題在故事板中,我將UITableview連接爲tableview outlet和view outlet,並刪除了UIView對象,因此UITableview在實例化時加載,因爲它是viewcontroller的視圖出口,因此viewDidLoad()被調用 –
我的想法是,你的視圖控制器在一些實例「instantiateviewcontroller」調用之前的其他方式。 – kirander
感謝您的回覆,但不,我不在其他地方加載視圖控制器。此外,我不在代碼中的任何位置調用viewcontroller.view –
雙向檢查視圖控制器的故事板。 – kirander