ios - For completely programmatically created UIView/UIViewController, what should be in loadView vs viewDidLoad? -


for experimentation purposes, trying in code.

i have custom root uiview/uiviewcontroller subclass pair called rootview , rootviewcontroller respectively.

i have glkview/glkviewcontroller subclass pair called renderview , renderviewcontroller.

both uiviewcontroller subclasses create managed views in loadview overrides.

setting main rootviewcontroller/rootview simple. in appdelegate subclass, create main window , assign rootviewcontroller proeprty so...

#import "appdelegate.h" #import "rootviewcontroller.h"  @implementation appdelegate    - (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions     {         cgrect screenbounds = [[uiscreen mainscreen] bounds];       // set window         uiwindow* mainwindow = [[uiwindow alloc] initwithframe:screenbounds];         mainwindow.rootviewcontroller = [rootviewcontroller new];         self.window = mainwindow;          [mainwindow makekeyandvisible];          return yes;     }  @end 

the rootview appears on screen 1 expect.

what i'm wondering view hierarchy initialization. rootviewcontroller has property hold instance of renderviewcontroller, , renderview (initially) placed in frame stored in second property of rootviewcontroller called renderviewframe.

my question proper place set hierarchy?

the documentation states that's uiviewcontroller's loadview i'm doing there...

- (void)loadview {     self.view = [[rootview alloc] initwithframe:[[uiscreen mainscreen] bounds]];   // set renderviewcontroller     renderviewcontroller* renderviewcontroller = [renderviewcontroller new];     [self addchildviewcontroller:renderviewcontroller];      renderviewcontroller.view.frame = self.renderviewframe;     [self.view addsubview:renderviewcontroller.view];      self.renderviewcontroller = renderviewcontroller; } 

...and works, i've seen people no, should move relating creating renderview/renderviewcontroller rootviewcontroller's viewdidload , not loadview, no 1 can why. mean part of hierarchy , that's loadview for.

and if i'm right, why i/anyone need use viewdidload @ if we're doing initialization in loadview, or artifact when memory unload views way in ios6?

your solution fine programmatic solution. since need implement loadview can initialization here.

you can mixed loadview , viewdidload solution (only set view property in loadview, rest in viewdidload); might make easier go nib/story board solution later on. having initialization in 1 place (just loadview) might easier maintain having split in 2 (loadview , viewdidload). on other hand, people expect see viewdidload method. can see, it's matter of taste.

when using xibs or story boards, of course it's recommended avoid touching loadview @ , should implement viewdidload.


Popular posts from this blog

php - How should I create my API for mobile applications (Needs Authentication) -

5 Reasons to Blog Anonymously (and 5 Reasons Not To)

Google AdWords and AdSense - A Dynamic Small Business Marketing Duo