A. Creation of the ControllerThere are several common ways to create controllers:
Create with Storyboard
Directly create
1 Viewcontroller *VC = [[Viewcontroller alloc] init];
Xib after setting the class, when the Xib file name is the same as the controller class name, the controller specified xib file in Xib is loaded by default in this method to create
1 Viewcontroller *VC = [[Viewcontroller alloc] initwithnibname:@ "Viewcontroller" bundle:nil];
1. Create from Storyboard (1) Create an empty application (without storyboard) (2) Create window and add to screen
1-(BOOL) Application: (UIApplication *) application didfinishlaunchingwithoptions: (Nsdictionary *) launchOptions {2 //Manually add window to screen3 self.window = [[UIWindow alloc] init];4 self.window.frame = [[UIScreen mainscreen] bounds];5 self.window.backgroundColor = [Uicolor graycolor];6 [Self.window makekeyandvisible];7 return YES;8}
(3) Create a storyboard, drag into a controller (4) to remove storyboard (in fact, is equivalent to xib)
1 //2. Get Stroyboard2 uistoryboard *sb = [Uistoryboard storyboardwithname:@ "MYSB" bundle:nil];
(5) Set Storyboard controller for Rootviewcontroller There are two ways to get Controllera on storyboard. Directly using the ingress controller, the background color of this view is olive green Set the class of Viewcontroller in storyboard to be a custom controller
1 //3.1 Direct use InitialViewController2 Self.window.rootViewController = [SB Instantiateinitialviewcontroller] ;
B. Use the ID to set the Viewcontroller class and drag into a viewcontroller, set the view background color is yellow, the setting ID is "VC2"
1 //4. Use ID to get controller, set rootViewController2 self.window.rootViewController = [SB instantiateviewcontrollerwithidentifier:@ "VC2"];
Completion of the loading process:
1-(BOOL) Application: (UIApplication *) application didfinishlaunchingwithoptions: (Nsdictionary *) launchOptions {2 //1. Manually add window to screen 3 Self.window = [[UIWindow alloc] init]; 4 self.window.frame = [[UIScreen mainscreen ] bounds]; 5 self.window.backgroundColor = [Uicolor Graycolor]; 6 [Self.window makekeyandvisible]; 7 8 //2. Obtained Stroyboard 9 uistoryboard *SB = [Uistoryboard storyboardwithname:@ "MYSB" bundle:nil];10 one //3. Remove Storyboar in Controller12 //3.1 directly using InitialViewController13 viewcontroller *controller = [SB INSTANTIATEINITIALVIEWCONTROLLER];14 //3.2 using ID16 ViewController2 *controller2 = [SB instantiateviewcontrollerwithidentifier:@ "VC2"];17 //4. Setting RootViewController19 Self.window.rootViewController = controller2;20 return yes;22}
Summary:1. Create a single View application, the project will bring a storyboard, in fact, do the above things set the main storyboard file, will automatically load storyboard 2. Different controller classes are responsible for the operation of different interfaces 2. Create directly (not detailed) 3. Specify that the Xib file is created using this method (1) to create a controller (2) to create a xib (3) Drag in the Xib two view, set some feature identification, convenient contrast (4) Set one of the view for the controller Viewa. Change the class of File ' s Owner to a custom controller B. Set the view of the controller (5) Load the controller from Xib and display the view to the window
1-(BOOL) Application: (UIApplication *) application didfinishlaunchingwithoptions: (Nsdictionary *) launchOptions {2 //1. Manually add window to screen 3 Self.window = [[UIWindow alloc] init]; 4 self.window.frame = [[UIScreen mainscreen ] bounds]; 5 self.window.backgroundColor = [Uicolor Graycolor]; 6 [Self.window makekeyandvisible]; 7 8 // Load controller from Xib, set Rootviewcontroller 9 self.window.rootViewController = [[Xibviewcontroller alloc] initwithnibname:@ " Myx "bundle:nil];10 return yes;12}
Summary:1.storyboard: (use ViewController2 here for Rootviewcontroller) Xib: (Use View1 as the view shown)
B. Creating a view for a controllerThere are several ways to create a view of a controller (created by priority, using only the preferred method)
- Loadview Code (Controller implementation Loadview method)
- Storyboard description
- Xib
Official documentation for the latest version:
1. Create a controller, storyboard, xib through Loadview (1) (2) Configure the class for the storyboard and xib for the custom controller (3) to storyboard and xib view plus the obvious flag (4) in the Controller class to implement Loadview (
when the controller's view is empty, it calls Loadview .)
1//Load view, this is a lazy load when you need to use view while view is empty call 2-(void) Loadview {3 NSLog (@ "Loadview ..."), 4 self.view = [[UIView All OC] init]; 5 self.view.frame = [[UIScreen mainscreen] bounds]; 6 UILabel *label = [[UILabel alloc] init]; 7 label.frame = CGRectMake (40, 40, 100, 100); 8 Label.text = @ "Loadview"; 9 [Self.view addsubview:label];10}
(5) Configure Controller to window on delegate A. Controller for configuration storyboard is Rootviewcontroller
1-(BOOL) Application: (UIApplication *) application didfinishlaunchingwithoptions: (Nsdictionary *) launchOptions {2 //config window 3 self.window = [[UIWindow alloc] init]; 4 self.window.frame = [[UIScreen mainscreen] bounds]; 5< C3/>self.window.backgroundcolor = [Uicolor Graycolor]; 6 7 //Configure the Controller in storyboard to Rootviewcontroller 8 self.window.rootViewController = [[Uistoryboard storyboardwithname:@ "Test" bundle:nil] instantiateinitialviewcontroller]; 9 //Configure the controller in the Xib as Rootviewcontroller, mainly using CONTROLLER11 with Loadview// Self.window.rootViewController = [[Viewcontroller alloc] initwithnibname:@ "Viewcontroller" bundle:nil];12 13 //Display WINDOW14 [Self.window makekeyandvisible];15 return yes;16}17
Will find no effect B. Similarly, using the controller in Xib as Rootviewcontroller, as long as Loadview exists, does not work
1 //Configuration controller in Xib is Rootviewcontroller, mainly using Controller2 self.window.rootViewController with Loadview = [[ Viewcontroller alloc] initwithnibname:@ "Viewcontroller" bundle:nil];
Summary:When configuring Rootviewcontroller, if the Loadview method is implemented in the configured controller, the view in storyboard or xib is overwritten
"iOS Base Controls-14" Controller && Controller View