TabelView分组。表头,表尾
删除vc 搭建tvc
分组界面中return 2 分2组;
在控制行加判断 如果section== 1 return10 (此时012 0123456789)
在sb中选中tv在style右样式改成Grouped 此时有了间隔
控制分组题头和尾。有个字符串
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return @"我是头";
}
-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
return @"我是尾";
}
如果把tv显示的横线去掉,选中tv 有个Separator 改成None 或者改变线的颜色
添加headview(顶部)显示效果:可以随着页面上下滚动(微博)
在sb中拖入view到cell顶部,此时可以随意调整高度,可以拖入label、uiimageview、textview等等。。
此时一滚动就随着滚动,上面不动的话是vc
如果是代码中控制headview的内容,那么要拖拽控件到tvc然后控制其显示内容
footview是view拖入中间,或下面,
——————————
静态Cell(里面的内容一成不变,比如设置) 使用的话要把代码注释掉
在sb中建立tvc 点击tv右侧选项中选择 content
数字是第几组
可以拖拽各种控件在上面
但是此时要把行数和显示内容的代码关掉
但可以加点击事件,
方法:tabelview didseletctrow。。。 { }
——————————
创建 Xib
删除sb,设置主界面 的选项 删除
选项。
在AppDelegate。m中第一个方法中,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = vc; ( 这个是新创建的页面)
[self.window makeKeyAndVisible];
return YES;
}
删除vc并创建一个继承uitvc的tvc并且给Xib打钩创建。
回到appdelegate。m刚才的方法中添加
TableViewController *vc = [[ViewController alloc]initWithNibName:@"TableViewController" bundle:nil];
————也可以创建一个vc,并且打钩xib
在app,m中关联vc,
在vc。xlb中创建控件,并关联,,
关联后进入vc。m中设置跳转页面:
1、声明tvc,进入点击事件中设置tvc*vc = 。。
设置跳转。
Xib用在页面中的使用
————————————————
Xib也可以作为控件
比如组合形式做出一个等待界面:loading、、、
新建vc并关联打钩xib,进入xib界面,调整页面大小, 右侧把电池去掉 ,拖入菊花,tabel。写成loading
此时的Xib的控件不能往m里拖拽,只能h中。
然后返回到vc。m中关联loadingview
在viewdidload中设置创建xib的自定义界面
LoadingView *lv = [[[NSBundle mainBundle]loadNibNamed:@"LoadingView" owner:self options:nil] lastObject];
lv.center = self.view.center;设置到中间
[self.view addSubview:lv];
但此时xib是一个数组,其中的lastobject是最后一个,
-————————
自定义Cel
l有三种方式:
1、纯代码(显示布局不固定)
2、通过sb(最简单:固定,不复用)
3、通过xib(显示固定但涉及复用)
如果是纯代码的就把cell删除
创建一个纯代码创建的cell
删除vc建立tvc
关联tvc
把cell删除
自己创建一个继承uitabelviewCell
在tvc声明导入cell
要实现左边图像右边文本,
此时sb中没有cell了,所以显示内容里就要改变成
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
并判断如果不存在cell
那么
cell = [[MyTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
创建控件后,就会进到mytvc。m当中
这时候要重写初始化方法。————输入init——并提示第四个之后选择并 重新替换成initwithstyle
因为后来tvc.m需要用到控件的属性所以设成了属性
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
//写自己想添加的各种控件
self.iv = [[UIImageView alloc]initWithFrame:CGRectMake(280, 0, 40, 40)];
self.iv.backgroundColor = [UIColor blueColor];
[self.contentView addSubview:self.iv];
}
return self;
}
此时返回tvc。m中设置10行
这样就每一行都带有自己定义的内容
(刚才iv在mytvc。h中声明了自己的属性并且值得注意的是不能起名imageView,因为重名,所以都是self)
在tvc中 ,声明cell。iv。image = @”“;
————————————————————————
2 在sb中创建自定义cell:
在sb中选中cell 创建好mytvc的类,并关联cell,cell加标识
此时拖拽出想要的效果,
如果里面内容(label)要与代码关联改变(比如数字递增);
那就把label链接mytvc。h
此时要创建,
转到tvc。m中
如果是纯代码创建 ,就是一个参数,如果是sb创建就是两个参数
此时是sb创建。那么
再加一个cell.mylabel.text = ..%d.in..row..、
此时就能显示逐行递增的效果
——————————
Xib 自定义cell
在sb中拖拽tv进来,并连线两个选项,
在vc中添加协议两个, tvdatasource 和 delegate
进入第一个协议,必须实现的方法,复制到外面,一个行数 一个内容,
retun 10行
此时创建一个集成uivc 的vc,并且打钩xib
在xib拖拽控件,回到vc。的显示内容中
关联mytvc,并创建cell。
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
判断如果cell没值,那么
if (!cell) {
cell = [[[NSBundle mainBundle]loadNibNamed:@"MyTableViewCell" owner:self options:nil]lastObject];
}
并且 return cell;
但是 要在xib的cell加标识cell
并且在xib中拖拽的界面大小在显示中并没有影响,
所以要在后面vc中输入控制行高的方法
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 130;
}