Alex Coplan
Alex Coplan

Reputation: 13361

iPhone: What gets called after viewDidLoad before viewWillAppear?

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

Upvotes: 12

Views: 15267

Answers (3)

Benjamin Mayo
Benjamin Mayo

Reputation: 6679

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?

Upvotes: 2

Luke
Luke

Reputation: 11476

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?

Upvotes: 32

Kevlar
Kevlar

Reputation: 8924

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.

Upvotes: 6

Related Questions