成都网站建设设计

将想法与焦点和您一起共享

ios开发xib的简单介绍

ios 开发中xib的multiplier有什么用

xib确实是一个很方便的工具;

创新互联建站主要从事成都网站制作、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务荥经,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

在创建某些自定义视图的时候如果用代码来写,会比较麻烦而且需要计算各种控件的frame,这样很不方便。这个时候使用XIB酒呢方便了。

使用步骤:

1.新建一个类,继承UIview。类名与下文中的XIB名称一致。

2.新建一个xib文件,在XIB 中 选中View 改它Class 为你建的 类名。注意是选中XIB的view绑定类的。

3.然后就可以在里面托各种控件,设置约束了。

4.实例化有两种方法,一种是在外部使用的时候直接调用

ios开发 通过xib创建view怎么添加tableview

我们以前通常会这样做

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

static NSString *CellIdentiferId = @"MomentsViewControllerCellID";

MomentsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentiferId];

if (cell == nil) {

NSArray *nibs = [[NSBundle mainBundle]loadNibNamed:@"MomentsCell" owner:nil options:nil];

cell = [nibs lastObject];

cell.backgroundColor = [UIColor clearColor];

};

}

return cell;

}

严重注意:我们之前这么用都没注意过重用的问题,这样写,如果在xib页面没有设置 重用字符串的话,是不能够被重用的,也就是每次都会重新创建,这是严重浪费内存的,所以,需要修改啊,一种修改方式是使用如下ios5提供的新方式:

- (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier

还有就是在xib页面设置好(ios5之前也可以用的)

如果忘了在xib中设置,还有一种方式

NSArray * nibObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomTableCell" owner:nil options:nil];

for (id obj in nibObjects)

{

if ([obj isKindOfClass:[CustomTableCell class]])

{

cell = obj;

[cell setValue:cellId forKey:@"reuseIdentifier"];

break;

}

}

还有更常用的

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return[self.items count];} -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell * cell =[tableView dequeueReusableCellWithIdentifier:@"myCell"]; if(!cell){ cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myCell"];} cell.textLabel.text =[self.items objectAtIndex:indexPath.row]; return cell;

}

但是现在有一种新的方式了,可以采用如下的方式

采用registerNib的方式,并且把设置都放在了willDisplayCell方法中了,而不是以前我们经常用的cellForRowAtIndexPath

这个方法我试了下,如果我们在xib中设置了 Identifier,那么此处的必须一致,否则会crash的

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

MyCustomCell * cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];

if (!cell)

{

[tableView registerNib:[UINib nibWithNibName:@"MyCustomCell" bundle:nil] forCellReuseIdentifier:@"myCell"];

cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];

}

return cell;

}

- (void)tableView:(UITableView *)tableView willDisplayCell:(MyCustomCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

{

cell.leftLabel.text = [self.items objectAtIndex:indexPath.row];

cell.rightLabel.text = [self.items objectAtIndex:indexPath.row];

cell.middleLabel.text = [self.items objectAtIndex:indexPath.row];

}

[img]

IOS开发,代码布局与xib布局有什么区别

iOS中xib与storyboard显示原理

在iOS中主要的布置界面的方式有3种:代码,xib,storyboard。

1. 代码

代码布置界面是万能的,但通常很复杂。布置一个简单的界面可能需要很多行代码,因此十分繁琐。

2. xib

xib适合布置小块界面,也可以用来做单个界面。属于拖控件型,只需要写加载xib的代码。

3.storyboard

storyboard适合做大界面的跳转等,而且丰富的viewController使得做减免变得非常简单。

关于基本原理:Android与iOS基本布局显示原理是一样的,都将视图与模型数据分离,都遵循MVC的设计模式。


文章标题:ios开发xib的简单介绍
链接地址:http://chengdu.cdxwcx.cn/article/dsohcsd.html