Day.03.03 UITableView 表视图代理方法
2016-03-03 本文已影响58人
挂树上的骷髅怪
#import "ViewController.h"
#define kScreenW [UIScreen mainScreen].bounds.size.width
#define kScreenH [UIScreen mainScreen].bounds.size.height
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (nonatomic,strong)NSMutableArray *dataList;
@property (nonatomic,strong)UITableView *tableView;
@property (nonatomic,strong)NSIndexPath *selectIP;//选中的索引
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// self.view.backgroundColor = [UIColor greenColor];
/**
* 从工程目录中读取文件
*/
// [NSBundle mainBundle]loadNibNamed:(NSString *) owner:(id) options:(NSDictionary *)
//1.获取文件路径
NSString *path = [[NSBundle mainBundle]pathForResource:@"font" ofType:@"plist"];
//2.通过路径加载容器对象
_dataList = [NSMutableArray arrayWithArray:[NSArray arrayWithContentsOfFile:path]];
//TableView 的尺寸
_tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 64, kScreenW, kScreenH-64) style:UITableViewStylePlain];
_tableView.dataSource = self;
_tableView.delegate = self;
[self.view addSubview:_tableView];
}
#pragma mark --UITableViewDelegate
//点击单元格调用
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"选中 %ld-%ld",indexPath.section,indexPath.row);
_selectIP = indexPath;//记录点击的单元格索引
[tableView reloadData];
//滑动到点击位置
// [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
//
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"上一个选中 %ld-%ld",indexPath.section,indexPath.row);
}
//指定单元格高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 50;
}
//指定组的头视图高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 50;
}
//指定组的尾视图高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 50;
}
//设置组头视图
- (nullable UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 50, 100)];
label.backgroundColor = [UIColor cyanColor];
label.text = [NSString stringWithFormat:@"section:%ld",section];
return label;
}
//设置组尾视图 :注意 return UIView类型可以是任何继承自UIView的类型
- (nullable UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];
label.backgroundColor = [UIColor yellowColor];
label.text = [NSString stringWithFormat:@"section:%ld",section];
return label;
}
/*----------------------------------------------------------------------------------*/
//单元格即将显示时调用 --> 单元格滑动到可视范围内
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
}
//单元格结束显示时调用 --> 单元格滑动到可视范围外
- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath{
}
//指定某一行的辅助视图
- (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath{
if (indexPath == _selectIP) {
return UITableViewCellAccessoryCheckmark;
}
return UITableViewCellAccessoryNone;
}
#pragma mark --UITableViewDataSource
//可选方法:返回 组个数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return _dataList.count;//组个数
}
//返回 每个组有多少个单元格
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
//1.从datalist中获取section下标对应的对象--->小数组(盛放的NSString*)
NSArray *subArray = _dataList[section];
return subArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identy = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identy];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identy];
}
NSArray *subArray = _dataList[indexPath.section];
//(2)在二级数组中 找到row对应的字符串对象
cell.textLabel.text = [NSString stringWithFormat:@"%ld-%ld %@",indexPath.section,indexPath.row,subArray[indexPath.row]];
return cell;
}
@end
屏幕快照 2016-03-03 下午7.56.09.png
屏幕快照 2016-03-03 下午7.50.23.png