我試圖將一些數據傳遞給我的視圖控制器類這樣得到傳遞的數據:不能在viewDidLoad方法
MyViewController *vc = [[MyViewController alloc] init];
vc.myProperty = dataToBePassed;
[self.navigationController pushViewController:vc animated:YES];
我需要做一些視圖配置在viewDidLoad中,但似乎viewDidLoad中早於財產分配。
然後在MyViewController實現:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"%@", self.myProperty); // Here i get myProperty = nil
}
- (void)viewWillAppear
{
[super viewWillAppear];
NSLog(@"%@", self.myProperty); // Here i get myProperty = dataToBePassed but it's to late
}
在viewDidLoad方法沒有實現單或委託模式怎樣才能得到傳遞的數據?
你在'init'中做什麼導致視圖被加載?你可以在初始化程序中添加一個參數並傳入它。 – dan
不,我不覆蓋MyViewController中的init方法。有沒有可能爲VC創建自定義初始化方法?我認爲所有VC初始化的東西都必須在'viewDidLoad'方法中。我錯了嗎? – rockhard
如果你使用的是故事板,那麼你不能寫一個自定義的初始化器,但是如果你只是像手動調用初始化器那樣你可以使用自定義的初始化器。 – dan