表格视图 - 填充数据

简介: 1. 实现UITableViewDataSource协议 2. 实现协议规定的重要方法 // 通知表格视图要装载的区段数(可选)  numberOfSectionsInTableView:   // 告诉表格视图控制器每个区段应该装载多少单元格或者行数(强制) tableView:num...

1. 实现UITableViewDataSource协议

2. 实现协议规定的重要方法

// 通知表格视图要装载的区段数(可选)

 numberOfSectionsInTableView:

 

// 告诉表格视图控制器每个区段应该装载多少单元格或者行数(强制)

tableView:numberOfRowsInSection:

 

// 返回一个UITableViewCell类的实例,该实例为数据行(强制)

tableView:cellForRowAtIndexPath:

 

3. 将表格视图数据源指向视图

self.myTableView.dataSource = self;

 

完整代码如下:

#import "ViewController.h"

static NSString *TableViewCellIdentifier = @"MyCells";

@interface ViewController () <UITableViewDataSource>

@property (nonatomic, strong) UITableView *myTableView;

@end

@implementation ViewController

// 显示3个区段
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{ 
    if ([tableView isEqual:self.myTableView])
    {
        return 3;
    }
    
    return 0;   
}

//  每个区段要显示多少行   
- (NSInteger)tableView:(UITableView *)tableView
                        numberOfRowsInSection:(NSInteger)section
 {   
    if ([tableView isEqual:self.myTableView])
    {
        switch (section)
        {
            // 第1段有3行
            case 0:
            {
                return 3;
                break;
            }
            // 第2段有5行
            case 1:
            {
                return 5;
                break;
            }
            // 第3段有8行
            case 2:
            {
                return 8;
                break;
            }
        }
    }
    
    return 0; 
}

// 为表格视图没行的label显示区段号和该行在本区段内的行号
- (UITableViewCell *)tableView:(UITableView *)tableView
                    cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = nil;
    
    if ([tableView isEqual:self.myTableView])
    {      
        cell = [tableView dequeueReusableCellWithIdentifier:TableViewCellIdentifier
                  forIndexPath:indexPath];
        
        cell.textLabel.text = [NSString stringWithFormat:
                                 @"Section %ld, Cell %ld",
                                 (long)indexPath.section,
                                 (long)indexPath.row];        
    }
    
    return cell;    
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.myTableView =
    [[UITableView alloc] initWithFrame:self.view.bounds
                                 style:UITableViewStylePlain];
    
    [self.myTableView registerClass:[UITableViewCell class]
             forCellReuseIdentifier:TableViewCellIdentifier];
    
    // 将表格视图数据源指向视图
    self.myTableView.dataSource = self;
    
    /* Make sure our table view resizes correctly */
    self.myTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    
    [self.view addSubview:self.myTableView];  
}

@end

 

目录
相关文章
|
12月前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
444 11
|
消息中间件 人工智能 监控
Paimon x StarRocks 助力喜马拉雅直播实时湖仓构建
本文由喜马拉雅直播业务与仓库建设负责人王琛撰写,介绍了喜马拉雅直播业务的数据仓库架构迭代升级。文章重点分享了基于 Flink + Paimon + StarRocks 实现实时湖仓的架构及其成效,通过分钟级别的收入监控、实时榜单生成、流量监测和盈亏预警,大幅提升了运营效率与决策质量,并为未来的业务扩展和 AI 项目打下坚实基础。
620 5
Paimon x StarRocks 助力喜马拉雅直播实时湖仓构建
|
机器学习/深度学习 算法 5G
|
文字识别 C# 开发者
WPF开源的一款免费、开箱即用的翻译、OCR工具
WPF开源的一款免费、开箱即用的翻译、OCR工具
298 0
|
人工智能 算法 Java
解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展
解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展
|
机器学习/深度学习 编解码 人工智能
论文精读 TransGAN:两个纯粹的Transformer可以组成一个强大的GAN(TransGAN:Two Pure Transformers Can Make One Strong GAN)
TransGAN是UT-Austin、加州大学、 IBM研究院的华人博士生构建了一个只使用纯 transformer 架构、完全没有卷积的 GAN,并将其命名为 TransGAN。该论文已被NeruIPS(Conference and Workshop on Neural Information Processing Systems,计算机人工智能领域A类会议)录用,文章发表于2021年12月。 该文章旨在仅使用Transformer网络设计GAN。Can we build a strong GAN completely free of convolutions? 论文地址:https://
论文精读 TransGAN:两个纯粹的Transformer可以组成一个强大的GAN(TransGAN:Two Pure Transformers Can Make One Strong GAN)
|
存储 Java 编译器
Android Gradle 详解
Gradle ,它是一个基于JVM的新一代构建工具,关于Gradle完全可以写一本书。这个小节就讲讲Android项目中Gradle的使用。目前Android应用大多都是采用Android Studio来开发的,Android Studio默认是采用Gradle作为构建工具的。通常开发者可以不需要理解任何Gradle的脚本配置,就可以开发出一个APP。但是,当你想做一些更智能的操作时,比如修改打包后的输出目录、提高打包速度、构建系统、插件化、热修复和组件化等等,就必须对Gradle有比较深入的了解
2525 0
Android Gradle 详解
|
SQL Java 数据库连接
Java实战:hutool-db实现多数据源配置
我们在日常开发中,经常会用到一个系统需要链接多个数据库来实现业务的需求,比如多个系统之间数据调用、两个数据之间同步等等。
Java实战:hutool-db实现多数据源配置
如何创建以太坊ERC20代币
看这篇文章需要对以太坊,智能合约,代币等概念有基本的了解。 什么是ERC20 可以把ERC20简单理解成以太坊上的一个代币协议,所有基于以太坊开发的代币合约都遵守这个协议。
2284 0