在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];