https://www.jianshu.com/p/1a78adb870fa

一、XIB的创建:

XIB的创建有两种方法:

第一种方法是在工程中创建类文件的时候自动生成XIB文件(并非所有的类文件创建时都能生成XIB文件,如不能生成请看第二种方法),如下图:

1

点击next生成的类文件如下图:

2

然后就可以直接使用创建好的XIB了。

第二种方法是在工程中创建类文件的时候不能自动生成XIB文件的时候,如下图:

3

这时候生成的类文件不带有XIB,如下图:

4

这时候需要使用XIB的话就要去创建该类文件的XIB了,command + N创建文件界面选择User Interface的View(Empty指创建一个空的XIB),如下图:

5

保存为与原文件类名一致(也可另起名,建议一致),如下图:

6

点击创建,所需要的XIB就创建成功了,如下图:

7

注意:第二种方法创建的XIB,需要手动去设置XIB关联的类,如下图:

8

选择需要关联的class,然后就可以直接使用创建好的XIB了。

二、XIB的使用:

在使用XIB之前需要设置一下XIB与类文件之间的关联项,如下图。以在MainViewController中创建TableView为例,左手按着control健,同时按住鼠标左键从1或2区域的按钮拉向图中View区域(1和2的关联均为已设置好的关联)。其中从1处的按钮分别拉向对应的Table View和View区域形成关联,从2处的按钮都拉向对应的Table View设置delegate和dataSoure。

9

然后将在XIB中创建的TableView和Label分别在类文件中生成对应的属性以及Button在类文件中生成对应的响应方法(左手按着control健,同时按住鼠标左键从左边区域拉向图中代码区域),如下图:

@property (weak, nonatomic) IBOutlet UITableView *tableView;

生成对应的属性tableView

@property (weak, nonatomic) IBOutlet UILabel *label1;

生成对应的属性label1

- (IBAction)button1:(id)sender {self.label1.text = [NSString stringWithFormat:@"%d",arc4random() % 5];
}

生成对应的响应方法- (IBAction)button1:(id)sender {}

设置好button之后,显示为9图中的3.

最后:

加载以UIViewController为基类的控制器MainViewController的XIB时,加载方法如下:

MainViewController * main = [[MainViewController alloc]initWithNibName:@"MainViewController" bundle:[NSBundle mainBundle]];

加载以UIView为基类的子视图BaseView的XIB时,加载方法如下:

BaseView * base = [[[NSBundle mainBundle]loadNibNamed:@"BaseView" owner:self options:nil] firstObject];

类文件MainViewController的.h文件和.m文件对应的代码如下:

#import <UIKit/UIKit.h>@interface MainViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *label1;@end
#import "MainViewController.h"
#import "NextViewController.h"@interface MainViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property(nonatomic,strong)NSArray * nameArray;
@end@implementation MainViewController- (void)viewDidLoad {[super viewDidLoad];[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];NSLog(@"%@",self.nameArray);
}- (NSArray *)nameArray {if (!_nameArray) {_nameArray = @[@"xib_1",@"xib_2",@"xib_3"];}return _nameArray;
}- (IBAction)button1:(id)sender {self.label1.text = [NSString stringWithFormat:@"%d",arc4random() % 5];
}#pragma mark - tableViewDelegate
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {return self.nameArray.count;
}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];if (!cell) {cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];}cell.textLabel.text = [NSString stringWithFormat:@"qqq%@",self.nameArray[indexPath.row]];cell.textLabel.textColor = [UIColor redColor];return cell;
}- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {NextViewController * next = [[NextViewController alloc]init];[self presentViewController:next animated:YES completion:nil];
}

Demo地址:XIB的创建使用

作者:wuyukobe
链接:https://www.jianshu.com/p/1a78adb870fa
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

iOS XIB的创建使用相关推荐

  1. [iOS Xib加载/封装] xib加载以后无法赋值Laber属性的值

    参考:iOS - xib史上最全说明 今天用xib封装一个view,已达到特定的需求, 然后发现 一开始的方法无法在加载xib之后对其中的Laber赋值, 错误❌ 的方式: 重写了init方法,使用a ...

  2. iOS Xib Storyboard

    iOS Xib & Storyboard InterfaceBuilder Xib文件 Xib解析方式 模拟示例 Storyboard storyboard分析 storyboard的启动 在 ...

  3. IOS xib和代码自定义UIView

    https://www.jianshu.com/p/1bcc29653085 总结的比较好 iOS开发中,我们常常将一块View封装起来,以便于统一管理内部的子控件. 下面就来说说自定义View的封装 ...

  4. iOS单例创建的一点疑惑

    线程安全的单例常用写法, +(AccountManager *)sharedManager{static AccountManager *defaultManager = nil;disptch_on ...

  5. IOS之自动创建项目各个文件夹

    IOS之自动创建项目各个文件夹 // // main.m // AutoCreateGroup // // Created by lujun on 2021/10/29. //#import < ...

  6. [iOS]xib中UILabel的Attributed属性介绍

    [iOS]xib中UILabel的Attributed属性介绍 xib中的Label,可以在属性板上选择无格式(Plain)或富文本格式(Attributed).如下: Attributed面板说明: ...

  7. **IOS:xib文件解析(xib和storyboard的比较,一个轻量级一个重量级)

    使用Xcode做iOS项目,经常会和Xib文件打交道,因为Xib文件直观的展现出运行时视图的外观,所以上手非常容易,使用也很方便,但对于从未用纯代码写过视图的童鞋,多数对Xib的理解有些片面. Xib ...

  8. ios xib 四等分_iOS界面布局的核心以及TangramKit介绍

    前言 layoutSubviews方法来完成界面布局,只不过在一些语法和属性设置上略有一些差异.可以这么说TangramKit是MyLayout布局库的一个升级版本.大家可以通过访问下面的github ...

  9. ios xib 四等分_ios Xib的几种用法[转]

    大多数Ios开发者都喜欢运用xib以及约束来布局,这样省去了大量初始化代码,但是xib的使用也是存在不少差异的: 一.xib的几个重要属性 xib的文件名 File's owner xib中的视图cl ...

最新文章

  1. 如何记录网内用户访问了哪些网站
  2. 【Android 逆向】Android 权限 ( ro.product.cpu.abi 属性 | ro.zygote 属性 | dhcp.eth0 属性 | net.* 属性 )
  3. ​​​​​​​CV:利用cv2(加载人脸识别xml文件及detectMultiScale函数得到人脸列表)+keras的load_model(加载表情hdf5、性别hdf5)并标注
  4. 分治法——巨人与鬼问题
  5. @Autowired @Resource @Inject 自动注入
  6. linux的目录创建时间,LINUX下文件创建时间问题
  7. c# 数据库操作学习
  8. Property 和 Attribute 的区别(转)
  9. 轻松搭建docker应用的mesos集群
  10. Warning: Stopping rpcbind.service, but it can still be activated by:rpcbind.socket
  11. 微信小程序服务器布置轮播图,微信小程序自定义轮播图
  12. STM32外设驱动总结(公司项目需要)
  13. 微博分享代码怎么显示自定义来源
  14. win10 外接显示器后出现input signal out of range
  15. 读书笔记3|使用Python,networkx对卡勒德胡赛尼三部曲之——《群山回唱》人物关系图谱绘制
  16. excel 职位分析
  17. 红楼梦词频统计,词云生成
  18. 【超详细教程(附源码)】基于 ARM Cortex-M3 处理器与 FPGA 的实时人脸检测 SOC
  19. Django - installing mysqlclient error: mysqlclient 1.4.0 or newer is required; you have 0.9.3
  20. 分布式--生成数据库全局唯一ID--方法/方案

热门文章

  1. (2013.01.18-2013.07.15)179天的学习小记
  2. 库存转换是什么意思_什么是供应链中的解耦点Decoupling point?它到底有啥用?...
  3. Pytest参数化-详解
  4. 算法导论第三版2.1答案
  5. 4-氧代-4- ((4-(10,15,20-三苯基-21H,23H-卟啉-5-基)苯基)氨基)丁酸( MAC)单氨基四苯基卟啉(MAPP);5-对羟基苯基-10,15,20-三苯基卟啉(HPTPP)
  6. [数据结构 -- C语言] 堆实现Top-K问题,原来王者荣耀的排名是这样实现的,又涨知识了
  7. 湖南亮仔智能机电有限公司
  8. 练习——随机森林分类毒、可食用蘑菇数据集
  9. php mysql 自动回复_【PHP + MySQL】【分享】搭建网站自动回复机器人
  10. 测试用例管理工具Zephyr(jira插件)的具体使用