美文网首页uicllectionViewiOS开发程序员
Day.03.03 UITableView 表视图代理方法

Day.03.03 UITableView 表视图代理方法

作者: 挂树上的骷髅怪 | 来源:发表于2016-03-03 19:57 被阅读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

    相关文章

      网友评论

        本文标题:Day.03.03 UITableView 表视图代理方法

        本文链接:https://www.haomeiwen.com/subject/zlcokttx.html