IOS 学习笔记 使用xib文件构建界面

目录

使用xib文件构建界面

1、将ViewController.h、ViewController.m、Main.storyboard三个文件delete掉

2、Deployment Info的Main Interface置空,也就是去掉Main

3、添加试图控制器

4、修改AppDelegate文件,将xib文件添加到window中

5、运行结果

6、 错误“This Class is not Key Value Coding-Compliant for the Key”



使用xib文件构建界面

 

目前做IOS开发iphone应用,xcode默认布局使用故事板来构建界面,老版本的工程中则使用的XIB文件来构建,XIB是在NIB的基础上发展而来,最初苹果公司采用的是NIB来构建界面,后来文件格式采用了xml,便更名为XIB。

默认在创建工程的时候采用的故事板Main.storyboard作为应用界面,更换成xib文件构建界面需要经过四个步骤,下面是oc版本的,

1、将ViewController.h、ViewController.m、Main.storyboard三个文件delete掉

2、Deployment Info的Main Interface置空,也就是去掉Main

注意:Main Interface置空,什么都不要写,重要的事情再说一遍:什么都不要写

如下图

IOS 学习笔记 使用xib文件构建界面_第1张图片

3、添加试图控制器

工具栏 File > New > File 弹出下图,选择:Cocoa Touch Class

IOS 学习笔记 使用xib文件构建界面_第2张图片

然后创建RootViewController如下图,一定有记得勾选XIB file

IOS 学习笔记 使用xib文件构建界面_第3张图片

然后生成如下目录的文件

IOS 学习笔记 使用xib文件构建界面_第4张图片

在XIB文件中加入几个控件,同故事板一样,拖拽进来即可

IOS 学习笔记 使用xib文件构建界面_第5张图片

 

4、修改AppDelegate文件,将xib文件添加到window中



#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    //最后一步将创建xib文件绑定到window界面上
    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = [[UIViewController alloc]initWithNibName:@"RootViewController" bundle:nil];
    [self.window makeKeyAndVisible];
    return YES;
}


@end

运行如果发现无法显示界面,检查一下步骤2和步骤4是否正确

 

5、运行结果

IOS 学习笔记 使用xib文件构建界面_第6张图片

 

6、 错误“This Class is not Key Value Coding-Compliant for the Key”

注意上面在在布局好之后,如果不连接IBOutlet属性变量还好,一旦增加就会报错:“This Class is not Key Value Coding-Compliant for the Key”

self.window.rootViewController = [[UIViewController alloc]initWithNibName:@"RootViewController" bundle:nil];

千万注意这样写会有个错误,可能还还很不好找,原因是不能像上面那这样写,应该写为:

self.window.rootViewController = [[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];

原因是可能在别处看的是UIViewController,但是这个UIViewController是系统的,确实能直接用但是直接用了之后就会出现上爱你错误。

并且在头部加上:#import "RootViewController.h"


#import "AppDelegate.h"
#import "RootViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    CGRect screen = [[UIScreen mainScreen] bounds];
    self.window = [[UIWindow alloc]initWithFrame:screen];

    self.window.rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
    [self.window makeKeyAndVisible];
    return YES;
}



@end

 

你可能感兴趣的:(IOS,IOS从0到1入门笔记)