1.表格的分类
按照显示的数据行数是否发生变化,分为两类
–1.动态表格 : 行数不定
–2.静态表格: 行数固定不变
主要应用场景: App设置界面 信息展示界面
实现特点:控制器中会出现大量的硬编码,会出现大量 if switch 这样判断分支语句
静态表格主要就是三问一答中使用各种判断语句来规定每一行表格应该如何显示以及每一行长什么样。
静态表格可以通过使用xib减少代码量。
动态表格通过遍历以及自定义cell实现
//表头覆盖问题解决办法
/*如果表头视图带xib 当前表视图控制器也带xib 那么没有问题,
如果表头视图带xib 当前表视图控制器不带xib 那么就用代码创建个视图 把xib的表头视图添加到 代码创建的视图中 设置代码创建的视图 为tableView的表视图 也就没有问题了*/
//设置表头视图
self.tableView.tableHeaderView = [self creatViewWithXibName:@"HeaderView"];
//设置表尾视图
FooterView *footerView = [[NSBundle mainBundle]loadNibNamed:@"FooterView" owner:nil options:nil].lastObject;
footerView.delegate = self;
self.tableView.tableFooterView = [self creatViewWithXibView:footerView];
//将 通过xib创建好的View 作为参数传入到方法中 方法返回的view是通过代码创建,里面包着xib创建的view
-(UIView*)creatViewWithXibView:(UIView*)xibView {
UIView *myView = [[UIView alloc]init];
myView.frame = xibView.frame;
[myView addSubview:xibView] ;
return myView;
}
//将 xib的名称传入到方法中 在方法中通过xib名称创建一个xib对应的View 方法返回的view是通过代码创建,里面包着xib创建的view
-(UIView*)creatViewWithXibName:(NSString*)xibName {
UIView *xibView = [[NSBundle mainBundle]loadNibNamed:xibName owner:nil options:nil].lastObject;
return [self creatViewWithXibView:xibView];
}
2.下拉刷新
步骤:
–step1: 创建UIRefreshControl的实例
–step2:将实例赋值给表视图控制器的 refreshControl属性
–step3: 创建UIRefreshControl的实例添加监听方法
// step1: 创建UIRefreshControl的实例
UIRefreshControl *rc = [[UIRefreshControl alloc]init];
// step2:将实例赋值给表视图控制器的 refreshControl属性
self.refreshControl = rc;
// step3: 创建UIRefreshControl的实例添加监听方法
[rc addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
-(void)refresh:(UIRefreshControl*)refreshControl {
//3秒钟以后执行 refreshOver 方法,并把深圳作为参数传入到 refreshOver 方法中
[self performSelector:@selector(refreshOver:) withObject:@"深圳" afterDelay:3];
}
-(void)refreshOver:(NSString*)newCity{
[self.cities insertObject:newCity atIndex:0];
// [self.tableView reloadData];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];
//结束刷新
[self.refreshControl endRefreshing];
}