uicllectionViewiOS开发程序员

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
上一篇下一篇

猜你喜欢

热点阅读