• UI_UITableView_搭建


    创建 tableView

    UITableViewStyle 有两种选择

    #pragma mark - 创建 tableView
    - (void)createTableView
    {
        // 枚举类型共同拥有两个
        self.mainTableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];
        [self addSubview:self.mainTableView];
    }

    根视图控制器遵守协议

    @interface RootViewController () <UITableViewDataSource, UITableViewDelegate>
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        // 设置数据源代理
        self.rootView.mainTableView.dataSource = self;
    
        // 设置 delegate
        self.rootView.mainTableView.delegate = self;
    
        self.title = @"联系人";
    
    }

    重写代理方法

    返回分组的个数

    #pragma -mark 返回分组的个数
    // 默觉得 1
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return 2;
    }

    每一个分组显示多少行数据 必须

    #pragma mark - 每一个分组显示多少行数据 *必须*
    // dataSource 下方法
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return self.nameArray.count;
    }

    每行显示什么内容 必须

    #pragma mark - 每行显示什么内容 *必须*
    // dataSource 下方法
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    
        // 四种类型
        // UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];
    
    
        // static 作用
        /**
         *  1、清零功能 static int a;
         *  2、保值作用
         *  3、隐藏功能 
         */
    
        // 静态变量 保值作用 仅仅创建一次
        static NSString *cell_id = @"UITableViewCell";
        // 利用重用创建
        UITableViewCell *cell = nil;
    
        // 在重用池查找
        cell = [tableView dequeueReusableCellWithIdentifier:cell_id];
    
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cell_id];
        }
    
    
    
        cell.textLabel.text = self.nameArray[indexPath.row];
    
    //    indexPath.section  那个分组
    //    indexPath.row    哪一行
        NSString *name = [NSString stringWithFormat:@"%ld.png", indexPath.row + 1];
        cell.imageView.image = [UIImage imageNamed:name];
    
        // 显示具体信息 cell 类型用 UITableViewCellStyleSubtitle
        cell.detailTextLabel.text = self.numberArray[indexPath.row];
    
        // 右側附件button 枚举类型
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    
        return cell;
    }

    row 的高度

    #pragma mark - 跳转 row 的高度
    
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 80.0f;
    }
    

    返回分组的名字

    #pragma mark - 返回分组的名字
    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
    {
        if (section == 0) {
            return @"分组一";
        }
        return @"分组二";
    }

    设置分组头部

    #pragma mark - 设置分组头部
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
    {
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 50)];
        label.textAlignment = NSTextAlignmentCenter;
        label.textColor = [UIColor redColor];
        if (section == 0) {
            label.text = @"1组";
        } else {
            label.text = @"2组";
        }
        return label;
    }

    设置分组头部的高度

    #pragma mark - 设置分组头部的高度
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    {
        return 60.0f;
    }#pragma mark - 设置分组头部的高度
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    {
        return 60.0f;
    }

    cell 的点击事件

    #pragma mark - cell 的点击事件
    - (void)tableView:(UITableView *) tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // 取消选中状态
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
    
        SecondViewController *secondVC = [[SecondViewController alloc] init];
    
        [self.navigationController pushViewController:secondVC animated:YES];
    }

    实现索引

    #pragma mark - 实现索引
    - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
    {
        return @[@"1组", @"2组"];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
  • 相关阅读:
    Jzoj4822 完美标号
    Jzoj4822 完美标号
    Jzoj4792 整除
    Jzoj4792 整除
    Educational Codeforces Round 79 A. New Year Garland
    Good Bye 2019 C. Make Good
    ?Good Bye 2019 B. Interesting Subarray
    Good Bye 2019 A. Card Game
    力扣算法题—088扰乱字符串【二叉树】
    力扣算法题—086分隔链表
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7255702.html
Copyright © 2020-2023  润新知