iPhone: What gets called after viewDidLoad before viewWillAppear?

只愿长相守 提交于 2019-12-30 06:05:41

问题


Really strange behaviour here. I've got a view with a scroll view inside, which contains my interface.

In my viewDidLoad, I set the frame of my scrollView to have an origin of 0,0.

I log the origin at the end of my viewDidLoad, and it's 0. However, at the start of my viewWillAppear, the origin is -20. Does anyone know what kind of method could get called that would do this?

Thanks in advance


回答1:


If you want to find out what it could be, you can try registering your view for key value observing, as described here: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html

You can register to listen for changes to the frame property, and then set a breakpoint in the observe method which should let you see exactly what the stacktrace is for when your origin is set to the strange value.




回答2:


You are correct with the current method precedence:

-(void)loadView;
-(void)viewDidLoad;
-(void)viewWillAppear;
-(void)viewDidAppear;

Is there perhaps a rotation call or some other method in the way, such as didRotateToInterfaceOrientation; for example? Also, is this scroll view part of a controller that's loaded from a nib file?




回答3:


20 pixel discrepancies and nib files always seem to be woe, but with Interface Builder and status bars. Are you setting up the nib with the same status-bar state as what your using in your app?

If you've hidden your status bar in your app, have you done the same in Interface Builder?



来源:https://stackoverflow.com/questions/6821067/iphone-what-gets-called-after-viewdidload-before-viewwillappear

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!