源码-0204-UITableView02

//
//  ViewController.m
//  05-UITableView01-多组数据
#import "ViewController.h"
#import "XMGCar.h"
#import "XMGCarGroup.h"

@interface ViewController () <UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
/** 所有组数据 */
@property (nonatomic, strong) NSArray *groups;
@end

@implementation ViewController

- (NSArray *)groups
{
    if (_groups == nil) {
        // 创建模型数据
        XMGCarGroup *group0 = [[XMGCarGroup alloc] init];
        group0.header = @"德系";
        group0.footer = @"德系车666";
        group0.cars = @[
                        [XMGCar carWithName:@"奥迪" icon:@"m_9_100"],
                        [XMGCar carWithName:@"宝马" icon:@"m_3_100"],
                        [XMGCar carWithName:@"奔驰" icon:@"m_2_100"]
                        ];

        XMGCarGroup *group1 = [[XMGCarGroup alloc] init];
        group1.header = @"日系";
        group1.footer = @"日系车666777";
        group1.cars = @[
                        [XMGCar carWithName:@"奥迪1" icon:@"m_9_100"],
                        [XMGCar carWithName:@"奔驰1" icon:@"m_2_100"],
                        [XMGCar carWithName:@"奥迪1" icon:@"m_9_100"],
                        [XMGCar carWithName:@"奔驰1" icon:@"m_2_100"],
                        [XMGCar carWithName:@"奥迪1" icon:@"m_9_100"],
                        [XMGCar carWithName:@"奔驰1" icon:@"m_2_100"],
                        [XMGCar carWithName:@"奥迪1" icon:@"m_9_100"],
                        [XMGCar carWithName:@"奔驰1" icon:@"m_2_100"],
                        [XMGCar carWithName:@"奥迪1" icon:@"m_9_100"],
                        [XMGCar carWithName:@"奔驰1" icon:@"m_2_100"],
                        [XMGCar carWithName:@"奥迪1" icon:@"m_9_100"],
                        [XMGCar carWithName:@"奔驰1" icon:@"m_2_100"]
                        ];

        XMGCarGroup *group2 = [[XMGCarGroup alloc] init];
        group2.header = @"日系1";
        group2.footer = @"日系车999999";
        group2.cars = @[
                        [XMGCar carWithName:@"奥迪2" icon:@"m_9_100"],
                        [XMGCar carWithName:@"奔驰2" icon:@"m_2_100"]
                        ];

        _groups = @[group0, group1, group2];
    }
    return _groups;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    // 设置数据源
    self.tableView.dataSource = self;
}

#pragma mark - <UITableViewDataSource>
/**
 *  告诉tableView第section组有多少行
 */
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    XMGCarGroup *group = self.groups[section];
    return group.cars.count;
}

/**
 *  告诉tableView一共有多少组数据
 */
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.groups.count;
}

/**
 *  告诉tableView第indexPath行显示怎样的cell
 */
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [[UITableViewCell alloc] init];

    XMGCarGroup *group = self.groups[indexPath.section];
    XMGCar *car = group.cars[indexPath.row];

    cell.textLabel.text = car.name;
    cell.imageView.image = [UIImage imageNamed:car.icon];

    return cell;
}

/**
 *  告诉tableView第section组的头部标题
 */
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    XMGCarGroup *group = self.groups[section];
    return group.header;
}

/**
 *  告诉tableView第section组的尾部标题
 */
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    XMGCarGroup *group = self.groups[section];
    return group.footer;
}
@end
//
//  XMGCar.h
//  05-UITableView01-多组数据
#import <Foundation/Foundation.h>

@interface XMGCar : NSObject
/** 名字 */
@property (nonatomic, strong) NSString *name;
/** 图标 */
@property (nonatomic, strong) NSString *icon;

+ (instancetype)carWithName:(NSString *)name icon:(NSString *)icon;
@end
//
//  XMGCar.m
//  05-UITableView01-多组数据
#import "XMGCar.h"

@implementation XMGCar
+ (instancetype)carWithName:(NSString *)name icon:(NSString *)icon
{
    XMGCar *car = [[self alloc] init];
    car.name = name;
    car.icon = icon;
    return car;
}
@end
//
//  XMGCarGroup.h
//  05-UITableView01-多组数据
#import <Foundation/Foundation.h>

@interface XMGCarGroup : NSObject
/** 头部标题 */
@property (nonatomic, strong) NSString *header;
/** 尾部标题 */
@property (nonatomic, strong) NSString *footer;
/** 这组所有的车辆模型(这个数组里面存放的都是XMGCar模型) */
@property (nonatomic, strong) NSArray *cars;
@end
//
//  XMGCarGroup.m
//  05-UITableView01-多组数据
#import "XMGCarGroup.h"

@implementation XMGCarGroup

@end
时间: 2024-10-10 13:27:31

源码-0204-UITableView02的相关文章

从Chrome源码看浏览器的事件机制

.aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto } .crayon-line span::after { content: " " } p { font-size: 15px; text-indent: 2em } #colorbox.crayon-colorbox,#cboxOverlay.crayon-colorbox,.crayon-colorbox #cboxWr

关于sru源码class Model的parameters

class Model(nn.Module): def __init__(self, words, args): super(Model, self).__init__() self.args = args self.n_d = args.d self.depth = args.depth self.drop = nn.Dropout(args.dropout) self.embedding_layer = EmbeddingLayer(self.n_d, words) self.n_V = s

小说分销系统,微信小说分销,类掌中云小说系统,类818tu系统源码

[演示站参数][][][][][][][][][][][] [后 台 地 址]     http://xiaoshuo.qqsiot.cn/manager          [] [管理员账号]     admin                                                     [] [渠道商账号]     channel                                                  [] [代理商账号]     age

cocos Creator js 房卡麻将/血战/H5四川麻将源码下载搭建

房卡麻将/血战/H5四川麻将 源码 支持iOS/Android/H5 完整源码 1.基于NODEJS+MYSQL的服务器,成熟的技术方案,高效稳定,且方便Windows开发,Linux平台布署,节约服务器运转成本. 2.采用最新版本的cocos引擎,cocos creator开发,可快速的进行界面调整.且能够快速地发布iOS,Android版本. 3.如需H5版本,只需针对H5平台进行资源优化即可. 4.成熟可靠的房卡式设计,能满足大部分用户使用体验. 5.产品经过大量测试,可以运转稳定. 测试

下载-深入浅出Netty源码剖析、Netty实战高性能分布式RPC、NIO+Netty5各种RPC架构实战演练三部曲视频教程

下载-深入浅出Netty源码剖析.Netty实战高性能分布式RPC.NIO+Netty5各种RPC架构实战演练三部曲视频教程 第一部分:入浅出Netty源码剖析 第二部分:Netty实战高性能分布式RPC 第三部分:NIO+Netty5各种RPC架构实战演练

android手机安全卫士、Kotlin漫画、支付宝动画、沉浸状态栏等源码

Android精选源码 轻量级底部导航栏 android手机卫士源码 android实现高仿今日头条源码 一个用Kotlin写的简单漫画App源码 android吐槽项目完整源码 实现可以滑动文字逐渐变色的TabLayout android实现将app隐藏加密功能的源码 android实现横向滚动的卡片堆叠布局 android仿支付宝的咻咻动画源码 android状态栏和沉浸式导航栏管理源码 Android优质博客 从BaseActivity与BaseFragment的封装谈起 这篇博客主要是从

Java企业微信开发_09_身份验证之移动端网页授权(有完整项目源码)

注: 源码已上传github: https://github.com/shirayner/WeiXin_QiYe_Demo 一.本节要点 1.1 授权回调域(可信域名) 在开始使用网页授权之前,需要先设置一下授权回调域.这里瞬间想到之前做JSSDK的时候,也设置过一个域名.二者本质上都是设置可信域名. 当用户授权完毕之后,请求将重定向到此域名(或者子域名)下的执行者(jsp页面或者servlet等).如何设置授权回调域,请见第二节. 1.2 获取Code https://open.weixin.

微信小程序源码下载(200多个)

微信小程序源码下载汇总,点击标题进入对应的微信小程序下载页面. 最新 demo源码(点击标题进入帖子下载) 描述 1 微信小程序 会议室预定小程序 微信小程序 会议室预定小程序**** 本内容被作者隐藏 **** 2 微信小程序-双人五子棋小游戏 微信小程序-双人五子棋小游戏**** 本内容被作者隐藏 **** 3 打卡签到小程序 用微信小程序实现的一个简单的打卡签到的小程序拒绝 4 微信小程序---左滑删除 微信小程序---左滑删除**** 本内容被作者隐藏 **** 5 一个借钱的记事本的微

ViewGroup源码解读

我们之前刚刚分析完事件传递机制和view的源码,如果没有看过的,建议看完View的事件拦截机制浅析以及View的事件源码解析.这次我们来分析下viewgroup的. 可能有人会想,怎么又是源码分析,肯定又是一大通.其实没你想的那么复杂.仔细分析一波就行了. 解读ViewGroup 我们都知道,一个事件完整的流程是从dispatchTouchevent–>onInterceptTouchevent–>onTouchEvent.我们先不说事件监听的问题.上述三个步骤就是正常一个点击的流程.前面我们

Java DES 加密和解密源码

Java密码学结构设计遵循两个原则: 1) 算法的独立性和可靠性. 2) 实现的独立性和相互作用性. 算法的独立性是通过定义密码服务类来获得.用户只需了解密码算法的概念,而不用去关心如何实现这些概念.实现的独立性和相互作用性通过密码服务提供器来实现.密码服务提供器是实现一个或多个密码服务的一个或多个程序包.软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器.安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来