自定义xib

一、加载xib文件的两种方式
1.方法一(NewsCell是xib文件的名称)
NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@“NewsCell” owner:nil options:nil];

2.方法二
UINib *nib = [UINib nibWithNibName:@“”NewsCell” bundle:nil];
NSArray *objects = [nib instantiateWithOwner:nil options:nil];

二、设置cell的高度
1.如果每一行cell的高度都是一样的,直接使用tableView的rowHeight属性设置cell的高度即可
tableView.rowHeight = 80;

2.如果每一行cell的高度不一定一样,应该用代理方法设置cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

    //返回indexPath这行对应Cell的高度
    return 80;
}

三、UITableViewController
1.UITableViewController内部默认会创建一个UITableView *tableView
2.UITableViewController内部tableView的delegate(代理)和dataSource(数据源)就是这个UITableViewController
3.UITableViewController内部tableView就是控制器的view

四、自定义cell
1.通过xib
1>一定要注意在xib的cell中设置重用标识(reuse identifier)
2>封装的步骤
*新建xib描述cell的样子—DealCell.xib
*新建UITableViewCell的子类—--DealCell(封装xib内部的所有东西)
*修改xib中cell的类名(class)为DealCell
*在DealCell中拥有xib中的所有子控件(声明属性、进行连线)
*新建模型Deal,封装数据
*给DealCell增加模型属性
    @property (nonatomic,strong) Deal *deal;
*重写setDeal:方法,在这个方法中根据模型数据设置cell内部子控件的属性
*提供一个类方法,返回从xib中创建好的cell对象
*给xib中的cell添加一个重用标志(比如deal),提供一个类方法,返回重用标志
*提供一个类方法,返回cell的高度
3>使用cell
*利用重用标志去缓存池取得cell
*如果缓存池没有cell,创建cell
*传递模型给cell

2.通过代码
1>新建一个UITableViewCell的子类——WeiboCell

2>在创建cell的时候(initWithStyle:reuseIdentifier:方法中)添加cell内部需要使用的子控件
(注意:只管创建子控件,先不要去管子控件的位置和尺寸)

3>新建一个模型类——Weibo,增加对应的数据属性

4>给WeiboCell增加一个Weibo模型属性,在拿到Weibo模型数据的同时设置子控件的属性
5>重写setWeibo:方法,在里面取出Weibo模型的数据显示在子控件上
时间: 2024-08-28 07:21:31

自定义xib的相关文章

xcode5设置自定义*.xib文件为main interface

从xcode5/iOS SDK 7.0开始,新建Single View Application默认界面是*.storyboard文件 如果删除*.storyboard新建自定义的xib文件,然后在Project Settings里设置的Main Interface为xib文件的话,运行时会报NSNullException错误. 用以下方法修改 AppDelegate.h/AppDelegate.m两个文件就可以使用自定义的xib做Main Interface 首先Project Settings

TableViewCell中自定义XIB的使用

默认的表格样式通常不能满足正常的开发需要 解决方法 —— 自定义Cell 1> XIB(团购) 2> 纯代码(微博) 3> StoryBoard XIB的定义步骤 ----------------------------------------------- 1> 新建HMTgCell.xib 2> 拽一个需要自定义的控件,摆放其他子控件 3> 新建一个类 * 类名要与XIB的名字保持一致 * 继承自的子类要与XIB中的根节点的类型一致 4> 要连线之前,需要将X

XIB加载 ---- [UIViewController _loadViewFromNibNamed:bundle:] loaded the "QuestionAndAnswerController" nib but the view outlet was not set

  问题: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "QuestionAndAnswerController" nib but the view outlet was not set.'    新创建一个ViewControl

IOS - xib(Interface Builder,view) - can't change view size(view不能改变大小问题)

很多时候,我们自定义tableview.collectionview的cell,也有时候我们要自定义窗口xib,但创建xib后,其height.width不可修改. 这时问题就来了,怎么才能使我们的自定义xib宽高可修改: 项目中创建xib,单独的view时, 方法: 默认Simulated metric中Size:inferred(推断),则view的height.width不可改变: 修改为Size:Freeform,现在我们的xib view 宽高可修改了. 学习并转载:http://ip

通过Xib自定义控件

加载xib的两种方式 NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"test" owner:nil options:nil]; UINib *nib = [UINib nibWithNibName:@"Test" bundle:nil]; // nil 默认是mainBundle NSArray *array = [nib instantiteWithOwer:nil object:nil]; 控制器拿

iOS开发UI篇—无限轮播(新闻数据展示)

一.实现效果        二.实现步骤 1.前期准备 (1)导入数据转模型的第三方框架MJExtension (2)向项目中添加保存有“新闻”数据的plist文件 (3)导入用到的图片素材 2.步骤和代码 (1)新建一个数据模型 该模型的代码设计如下: YYnews.h文件 1 // 2 // YYnews.h 3 // 08-无限滚动(新闻数据展示) 4 // 5 6 #import <Foundation/Foundation.h> 7 8 @interface YYnews : NSO

IOS UI基础08

自定义等高cell // 创建自定义cell添加子控件的方法initWithStyle(note:子控件要添加到contentView上) - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier NS_AVAILABLE_IOS(3_0); // 传统创建自定义view添加子空间的方法 //- (instancetype)initWithFrame:

iOS-常见问题

问题一: 我们在写程序的时候,屏幕的宽高我们不能写固定,例如写成320,480之类的,因为我们要适配不同的手机.常用的一种方法是在 .pch文件中设置宽高,因为.pch是一个预编译文件,在全局都能访问到. #define ScreenHeight [UIScreen mainScreen].bounds.size.hight; #define ScreenWidth [UIScreen mainScreen].bounds.size.width; 问题二: 这个问题比较简单,完全算不上技巧,但是

xcode 错误

[IOS平台篇] 1. 1 2 3 4 <span style="font-size: 16px;">duplicate symbol _OBJC_METACLASS_$_DMSDWebImagePrefetcher in:     /Users/admin/Library/Developer/Xcode/DerivedData/BankFinder-fqgijokhpyhxxycxegilsfupadsm/Build/Intermediates/BankFinder.bu