UIKit框架控制器的创建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIKit框架控制器的创建相关的知识,希望对你有一定的参考价值。

在UIKit中,UIViewController及其子类描述视图控制器,即一个页面

本篇文章介绍一下控制器的三种主要创建方式


  • 纯代码创建

即:alloc+init方式,如:

AMViewController * vc = [[AMViewController alloc] init];


  • 从storyboard中加载

 a. 创建UIStoryboard对象

+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle*)storyboardBundleOrNil

    name参数:storyboard文件名,不包含扩展名

    storyboardBundleOrNil参数:传nil即可

b. 从UIStoryboard对象中获取控制器对象

- (id)instantiateInitialViewController  //取出唯一的初始控制器
- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier //按照ID

如:

UIStoryboard * stoyrboard = [UIStoryboard storyboardWithName:@"main" bundle:nil];
//AMViewController *vc = [stoyrboard instantiateInitialViewController];
AMViewController *vc = [stoyrboard instantiateViewControllerWithIdentifier:@"redViewController"];


控制器的ID:在storyboard文件中可以设计多个控制器,每个控制器可以管理一个ID

    技术分享


  • 从xib中加载

xib设计控制器的view,有以下两种方式:

方法一:

     可以在xib中放置控制器,如:

     技术分享

     代码中仍然使用NSBundle的loadNibNamed:从Nib中创建

     设计的控制器,同样可以设置关联的子类类型

- (NSArray *)loadNibNamed:(NSString *)name owner:(id)owner options:(NSDictionary *)options

    name参数:传递xib文件的文件名(不带后缀名)

    其余参数传nil使用默认值即可

    返回值:为该xib文件中所有对象的数组,一般一个xib文件只设计一个对象


如:

AMViewController * vc = [[[NSBundle mainBundle] loadNibNamed:@"xxx"] lastObject];


方法二:

     在xib中仍然放置一个view,选则xib中的File’s owner ,设置class为控制器子类

     技术分享      技术分享

     右键File’s owner,view属性连线到xib中的view对象

     技术分享

     代码中使用UIViewController的一下init方法从xib中创建其view

- (instancetype)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle

     nibName参数:xib文件名,不包括后缀名

     nibBundle参数:传nil即可

如:

AMViewController * vc = [[AMViewController alloc] initWithNibName:@"view" bundle:nil];











本文出自 “teacherAn” 博客,请务必保留此出处http://annmeng.blog.51cto.com/3321237/1745898

以上是关于UIKit框架控制器的创建的主要内容,如果未能解决你的问题,请参考以下文章

纯代码搭建项目框架

基础框架Fundation和UIkit框架的定义和使用

UIKit框架框架简介

新特性页面

强制本地化 UIKit 等内部框架,无需重启 App

UIKit框架(21)UITableView实现复杂单元格