[英]viewDidLoad getting called before initWithFrame?
我有一個自定義init方法:
- (id) initWithFrame:(CGRect ) frame andImage:(UIImage *) image
{
self = [super init];
if (self){
self.view.frame = frame;
self.imageView_.image = image;
self.imageScrollView_.frame = self.view.frame;
imageOriginalFrame = frame;
zoomedImageFrame = frame;
NSLog(@"SCREEN DIM %f AND %f", zoomedImageFrame.size.height, zoomedImageFrame.origin.y);
}
return self;
}
這是我如何呈現它:
FullSizeImageViewController * fullSize = [[FullSizeImageViewController alloc] initWithFrame:imageOriginalFrame andImage:image];
if ([self.delegate respondsToSelector:@selector(fullStoryViewController:presentModalViewController:animated:)]) {
[self.delegate fullStoryViewController:self presentModalViewController:fullSize animated:YES];
}
但是,令人驚訝的是我的viewDidLoad在initWithFrame之前被調用。 這怎么可能?
我猜這是因為我打電話給超級初始化? 如果不是我該怎么做?
您的viewDidLoad
方法未在 initWithFrame:andImage:
方法之前調用。 在 initWithFrame:andImage:
方法期間調用viewDidLoad
方法。
你的initWithFrame:andImage:
方法包含這一行:
self.view.frame = frame;
這是簡寫:
[[self view] setFrame:frame];
所以你的方法是調用-[UIViewController view]
方法。 -[UIViewController view]
方法基本上是這樣的:
- (UIView *)view {
if (!_view) {
[self loadView];
[self viewDidLoad];
}
return _view;
}
嘗試在viewDidLoad
方法中添加斷點。 當它被擊中時,查看堆棧跟蹤。 你會發現initWithFrame:andImage:
in。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.