免费开源的iOS开发学习平台

UIViewController介绍:2-使用xib以及Storyboard创建控制器

创建控制器对象的方法,除了最常用的使用代码创建之外,Xcode还提供了两种图形化的创建方式。这两种方式可以比较直观的定制控制器的外观样式,但在大型的App开发项目中,使用并不广泛。

使用XIB创建控制器

在Xcode中创建控制器类,继承自UIViewController,并勾选“also create XIB file”,如下图所示 :

创建成功后,系统会自动创建3个文件,分别为.h/.m/.xib文件。

选中.xib文件,可以看到xib文件的File’s Owner属性为:XibViewController类,同时提供了一个空白的View供开发者设计界面,这个View就是控制器对应的View。

我们可以在xib文件中提供的View中,设置一下View的背景颜色,并新增一个UIImageView控件。

在AppDelegate.m文件中,实例化这个控制器,并设置为window的根控制器,最后显示出来,注意实例化控制器使用initWithNibName方法。

#import "AppDelegate.h"
#import "XibViewController.h
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //实例化控制器
    XibViewController *rootVc = [[XibViewController alloc] initWithNibName:@"XibViewController" bundle:nil];
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.rootViewController = rootVc;
    [self.window makeKeyAndVisible];
    return YES;
}

运行后,运行结果如下:

使用StoryBoard创建控制器

在StoryBoard中,也可以创建控制器,通过拖拉UIViewController控件,可以添加一个控制器,需要注意:必须给该控制器指定其:Storyboard ID,如下图所示。

在需要实例化该控制器的代码中,使用instantiateViewControllerWithIdentifier方法来实例化在StoryBoard中定义的控制器对象。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
    UIViewController *rootVc = [storyBoard instantiateViewControllerWithIdentifier:@"SBViewController"];
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.rootViewController = rootVc;
    [self.window makeKeyAndVisible];
    return YES;
}

运行结果如下。

示例代码

https://github.com/99ios/9.1.2