ios-使用Xib加载或Storyboard加载控制器(视图)

在ios中,一般建议使用代码布局,因为使用代码布局,后期维护容易,拓展容易,并且可以实现动态加载很多数据,但如果你对代码布局觉得繁琐,觉得Xib布局或者Storyboard布局比较方便适合你,那也不是不可以使用,下面来详细介绍Xib布局和Storyboard布局,本文只介绍布局搭建,关于动作响应和事件处理不会涉及:

1、Xib加载:

// 假如,在App启动时,我想给window加载一个视图控制器作为根控制器,这个视图控制器所带的视图(view),使用Xib加载
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    KFViewController *kfViewCtl = [[KFViewController alloc] initWithNibName:@"KFViewController" bundle:nil];
    
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    self.window.rootViewController = kfViewCtl;
    [self.window makeKeyAndVisible];
    return YES;
}

自定义视图控制器类:

//
//  KFViewController.h
//
#import <UIKit/UIKit.h>

@interface KFViewController : UIViewController

@end
//
//  KFViewController.m
//  
#import "KFViewController.h"

@interface KFViewController ()

@end

@implementation KFViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end


新建Xib文件,Xib文件的名称可以随意起名:




Xib文件创建好后,点击该Xib文件,设置如下:



也就是:

1、点击KFViewController.xib -> File's Owner -> 身份检查器 -> Class -> KFViewController

2、点击File's Owner -> 按住"Ctrl"按键不放 -> 鼠标左键按住不放,拖动到"View" -> 选中view


至此,Xib布局已经全部搭建好,在View当中,你就可以按照你的所想来拖放你所想要的控件来布局了。


2、Storyboard加载:

// 假如,在App启动时,我想给window加载一个视图控制器作为根控制器,这个视图控制器所带的视图(view),使用Storyboard加载
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    KFViewController *viewCtl = [storyBoard instantiateViewControllerWithIdentifier:@"KFViewCtl"];
    
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    self.window.rootViewController = viewCtl;
    [self.window makeKeyAndVisible];
    return YES;
}


自定义视图控制器类:

//
//  KFViewController.h
//
#import <UIKit/UIKit.h>

@interface KFViewController : UIViewController

@end
//
//  KFViewController.m
//  
#import "KFViewController.h"

@interface KFViewController ()

@end

@implementation KFViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

新建Storyboard文件,Storyboard文件的名称可以随意起名:




Storyboard文件创建好后,点击该Storyboard文件,设置如下:


也就是:

1、点击MainStoryboard.storyboard -> View Controller -> 身份检查器 -> Class -> KFViewController

2、Identity -> Storyboard ID -> 填入该控制器的唯一标识


至此,Storyboard布局已经全部搭建好,在View当中,你就可以按照你的所想来拖放你所想要的控件来布局了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值