猫猫学IOS(十三)UI之UITableView学习(下)汽车名牌带右侧索引

article/2025/1/11 9:50:06

猫猫分享,必须精品

素材代码地址:http://blog.csdn.net/u013357243/article/details/44727225
原文地址:http://blog.csdn.net/u013357243?viewmode=contents

先看效果图

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

代码 ViewController

//ps:新建iOS交流学习群:304570962 
可以加猫猫QQ:1764541256 或则微信znycat 
让我们一起努力学习吧。 
原文:http://blog.csdn.net/u013357243?viewmode=contents
//  NYViewController.m
//  06-汽车品牌带右侧索引
//
//  Created by apple on 15-3-29.
//  Copyright (c) 2015年 znycat. All rights reserved.
//#import "NYViewController.h"
#import "NYCarGroup.h"
#import "NYCar.h"@interface NYViewController () <UITableViewDataSource>@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) NSArray *carGroups;@end@implementation NYViewController-(UITableView *)tableView
{if (_tableView == nil) {_tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];//设置数据源_tableView.dataSource = self;//加载上去[self.view addSubview:_tableView];}return _tableView;
}//懒加载
-(NSArray *)carGroups
{if (_carGroups == nil) {_carGroups = [NYCarGroup carGroups];}return _carGroups;
}- (void)viewDidLoad
{[super viewDidLoad];//    NSLog(@"%@", self.carGroups);// 调用tableView添加到视图[self tableView];
}#pragma mark - tableView 数据源方法/**分组总数*/
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{return self.carGroups.count;
}/**每一组多少行 ,section是第几组*/
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{NYCarGroup * group = self.carGroups[section];return group.cars.count;
}/**单元格*/
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{//可重用表示符static NSString *ID = @"cell";//让表格去缓冲区查找可重用cellUITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:ID];//如果没有找到可重用cellif (cell == nil) {//实例化cellcell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];}//设置cell 内容//取出数据模型NYCarGroup *group = self.carGroups[indexPath.section];NYCar *car = group.cars[indexPath.row];//设置数据cell.imageView.image = [UIImage imageNamed:car.icon];cell.textLabel.text = car.name;return cell;
}/**每一组的标题*/
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{return [self.carGroups[section] title];
}/** 右侧索引列表*/
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{/*索引数组中的"内容",跟分组无关索引数组中的下标,对应的是分组的下标return @[@"哇哈哈", @"hello", @"哇哈哈", @"hello", @"哇哈哈", @"hello", @"哇哈哈", @"hello"];返回self.carGroup中title的数组NSMutableArray *arrayM = [NSMutableArray array];for (HMCarGroup *group in self.carGroups) {[arrayM addObject:group.title];}return arrayM;KVC是cocoa的大招用来间接获取或者修改对象属性的方式使用KVC在获取数值时,如果指定对象不包含keyPath的"键名",会自动进入对象的内部查找如果取值的对象是一个数组,同样返回一个数组*//*例如:NSArray *array = [self.carGroups valueForKeyPath:@"cars.name"];NSLog(@"%@", array);*/return [self.carGroups valueForKeyPath:@"title"];}
@end

模型代码


NYCar.h

//
//  NYCar.h
//  06-汽车品牌带右侧索引
//
//  Created by apple on 15-3-29.
//  Copyright (c) 2015年 znycat. All rights reserved.
//#import <Foundation/Foundation.h>@interface NYCar : NSObject@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *icon;-(instancetype) initWithDict:(NSDictionary *)dict;
+(instancetype) carWithDict:(NSDictionary *)dict;
// 传入一个包含字典的数组,返回一个HMCar模型的数组
+(NSArray *) carsWithArray:(NSArray *)array;
@end

NYCar.m

//
//  NYCar.m
//  06-汽车品牌带右侧索引
//
//  Created by apple on 15-3-29.
//  Copyright (c) 2015年 znycat. All rights reserved.
//#import "NYCar.h"@implementation NYCar-(instancetype)initWithDict:(NSDictionary *)dict
{self = [super init];if (self) {[self setValuesForKeysWithDictionary:dict];}return self;
}+(instancetype)carWithDict:(NSDictionary *)dict
{return [[self alloc] initWithDict:dict];
}+(NSArray *)carsWithArray:(NSArray *)array
{NSMutableArray *arrayM = [NSMutableArray array];for (NSDictionary *dict in array) {[arrayM addObject:[self carWithDict:dict]];}return arrayM;
}- (NSString *)description
{return [NSString stringWithFormat:@"<%@: %p> {name: %@, icon: %@}",self.class, self, self.name, self.icon ];
}
@end

NYCarGroup.h

//
//  NYCarGroup.h
//  06-汽车品牌带右侧索引
//
//  Created by apple on 15-3-29.
//  Copyright (c) 2015年 znycat. All rights reserved.
//#import <Foundation/Foundation.h>@interface NYCarGroup : NSObject
/** 首字母 */
@property (nonatomic, copy) NSString *title;
/** 车的数组,存放的是HMCar的模型数据 */
@property (nonatomic, strong) NSArray *cars;-(instancetype) initWithDict:(NSDictionary *)dict;
+(instancetype) carGroupWithDict:(NSDictionary *)dict;
+(NSArray *) carGroups;
@end

NYCarGroup.m

//
//  NYCarGroup.m
//  06-汽车品牌带右侧索引
//
//  Created by apple on 15-3-29.
//  Copyright (c) 2015年 znycat. All rights reserved.
//#import "NYCarGroup.h"
#import "NYCar.h"
@implementation NYCarGroup
-(instancetype)initWithDict:(NSDictionary *)dict
{self = [super init];if (self) {//        [self setValuesForKeysWithDictionary:dict];        // dict[@"cars"]存放的是字典的数组// 希望将字典的数组转换成HMCar模型的数组//        [self setValue:dict[@"cars"] forKey:@"cars"];[self setValue:dict[@"title"] forKeyPath:@"title"];self.cars = [NYCar carsWithArray:dict[@"cars"]];}return self;
}+(instancetype)carGroupWithDict:(NSDictionary *)dict
{return [[self alloc] initWithDict:dict];
}+(NSArray *)carGroups
{NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"cars_total.plist" ofType:nil]];NSMutableArray *arrayM = [NSMutableArray array];for (NSDictionary *dict in array) {[arrayM addObject:[self carGroupWithDict:dict]];}return arrayM;
}- (NSString *)description
{return [NSString stringWithFormat:@"<%@: %p> {title: %@, cars: %@}", self.class, self, self.title, self.cars];
}@end

代码偶了

注意点

实现右侧索引:

/* 右侧索引列表/
-(NSArray )sectionIndexTitlesForTableView:(UITableView )tableView


对dataSource复习

@required的两个
/**单元格*/
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
/**每一组多少行 ,section是第几组*/
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

/*分组总数/
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

/*每一组的标题/
-(NSString )tableView:(UITableView )tableView titleForHeaderInSection:(NSInteger)section


出错误了,求助失败[apple mach - o linker error]

听说学iOS百度没用。。。今天真信了,出了个错误,
【apple mach - o linker error】
如图

喵呜

度娘n久,问了8个iOS相关的学习群,得到的无外乎这样
{
常见错误描述:
Apple Mach-O Linker Error这类错误的错误信息最后一行通常如下:
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang failed with exit code 1
发生这种错误的原因通常是因为项目中存在同名类造成链接错误。

有可能是你存在两个类名称都一样,也可能是因为你在不同的.m文件中定义了同样的const变量。

这类错误需要自己看错误信息中给出的大长串路径,从中找出你的那个重名类或者变量名称,以此来定位错误位置。
}

好了 我只想说,猫猫自己把代码拷贝出来,然后又关了xcode ,最后重新建立了一个项目,把代码不动得放回,就这么华丽丽的好了。。。。。。。。。。。。

(偶喵了个咪闹)
iOS这部分需要我们大家一起努力啊!
!!!分享我们的成功,喵呜

ps:新建iOS交流学习群:304570962
可以加猫猫QQ:1764541256 或则微信znycat
让我们一起努力学习吧。
原文:http://blog.csdn.net/u013357243?viewmode=contents


http://chatgpt.dhexx.cn/article/YhRuGrK8.shtml

相关文章

在android上模拟ios阴影效果

update一下&#xff0c;下面方法现在来看很low&#xff0c;其实最简单的是直接自定义一个drawable android上大部分时候阴影是不符合产品需求的&#xff0c;就比如我们就要求实现一个类似ios的圆形图片的阴影??? cardview阴影就挺好&#xff0c;可是他喵了个咪的&#xff0…

猫猫学IOS(六)UI之iOS热门游戏_超级猜图

猫猫分享&#xff0c;必须精品 素材地址:http://blog.csdn.net/u013357243/article/details/44539069 原创文章&#xff0c;欢迎转载。转载请注明&#xff1a;翟乃玉的博客 地址&#xff1a;http://blog.csdn.net/u013357243?viewmodecontents 先看效果图 思路 需求分析…

iOS汇编基础(二)寄存器

以arm64为例 xcode调试汇编1. xcode 查看运行时的汇编代码 debug -> debug workflow -> always show disassembly 2. Xcode改变pc值 register write pc 0x1005d6928 3. 单步运行一步汇编代码:ni 4. 读取某个寄存器 (lldb) register read x0x0 = 0x0000000000000000…

Unity简单操作: DoTween的onCom..回调函数里面执行错误 不返回哪条函数出错的解决方案,与iOS平台为什么需要勾选安全模式

目录 DoTween的onCom..回调函数里面执行错误 不返回哪条函数出错的解决方案 当然 在iOS平台 测试好了的话 需要勾选它&#xff0c;不然iOS机制原因 会导致onComxx回调 没有执行&#xff01; DoTween的onCom..回调函数里面执行错误 不返回哪条函数出错的解决方案 如下图&…

iOS汇编基础(一)

一 高级语言运行过程 二 汇编语言的特点 可以直接访问、控制各种硬件设备,比如存储器、CPU等,能最大限度地发挥硬件的功能能够不受编译器的限制,对生成的二进制代码进行完全的控制目标代码简短,占用内存少,执行速度快汇编指令是机器指令的助记符,同机器指令一一对应。每一…

STM32cubIDE 黑色主题_主题 | 喵咪旅行日志 VX可爱系列主题 BySasa

今天带来一款Sasa小宝贝儿投稿的可爱系列VX主题&#xff0c;应该也算是可爱系列里偏向简单的了。 鉴于前几次留言总是碰到隔着网线就不需要情商的DS。在前边先申明清楚吧&#xff0c;审美各有差异&#xff0c;不喜欢不用就好了。如果没有素质去diss投稿者作品&#xff0c;那就别…

tp框架怎么连接mysql_tp框架知识 之(链接数据库和操作数据)

框架有时会用到数据库的内容&#xff0c;在"ThinkPhp框架知识"的那篇随笔中提到过&#xff0c;现在这篇随笔详细的描述下。 一、链接数据库 (1)找到模块文件夹中的Conf文件夹&#xff0c;然后进行编写config.php文件 我这里是这样的文件路径 (2)打开这个config.php文…

thinkphp6开发cms项目之安装tp框架

1.安装thinkphp6框架&#xff1a; composer create-project topthink/think tp需要安装的扩展&#xff1a; composer require topthink/think-multi-app //多应用 composer require topthink/think-view //视图 composer require topthink/think-captcha //验证码2.如果运行ph…

我的服务器开发之路-安装thinkphp

http://www.thinkphp.cn/down/framework.html 下载thinkphp 我这边下载的是thinkphp5.0.3核心版 然后&#xff0c;打开xftp 4&#xff0c;将下载的thinkphp5.0.3的压缩包解压到tp503目录&#xff0c;并上传到/data/www/web目录 然后&#xff0c;打开浏览器&#xff0c;输入 域…

tp框架与mysql_TP框架对数据库的基本操作

数据库的操作&#xff0c;无疑就是连接数据库&#xff0c;然后对数据库中的表进行各种查询&#xff0c;然后就是对数据的增删改的操作&#xff0c;一步步的讲述一下框架对数据库的操作 想要操作数据库&#xff0c;第一步必然是要&#xff1a;链接数据库 一、链接数据库 (1)找到…

php tp框架,TP框架

tp:thinkphp框架&#xff0c;它也是一个轻量级的框架&#xff0c;它有中文社区&#xff0c;中文的帮助文档。它是国人开发的框架。 Thinkphp框架最初是由于企业级网站的开发和web网站的开发诞生的&#xff0c;最初诞生在2006年&#xff0c;它叫fsc,2007年正式更名为thinkphp,它…

TP5框架

第一次写博客 因为自己的技术是在有点差,所以想提升一下自己的技术,所有尝试写下博客,这次是关于TP5框架的, 开发PHP肯定要环境,手搭PHP不是不行,只是切换版本的时候特别麻烦,所以我下载了一个集成环境,用的是PHPstudy,小伙伴们可以自行去下载 ###我下载的是TP5.0完整版本,压…

Oracle轻量级客户端下载,Oracle轻量级客户端使用,Oracle轻量级客户端配置,本地同时安装服务器端和客户端,并实现plsql developer连接

Oracle轻量级客户端&#xff0c;不需要安装&#xff0c;绿色版&#xff0c;可以用于本地或者远程数据库连接&#xff0c;包含了基本的sqlplus&#xff0c;数据泵等功能。 官方解释如下&#xff1a;https://www.oracle.com/technetwork/database/database-technologies/instant…

使用ThinkPhp6框架搭建的管理系统

项目介绍 一款 PHP 语言基于 ThinkPhp6.x、Layui、MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架&#xff0c;可用于快速搭建前后端分离后台管理系统&#xff0c;本着简化开发、提升开发效率的初衷&#xff0c;框架自研了一套个性化的组件&am…

php 命令安装tp5,tp5.1框架的下载与安装方法步骤(图文)

大家可以都知道啊&#xff0c;tp框架5.1之前的版本都是可以在thinkphp的官网进行下载压缩包来安装框架的&#xff0c;那么在从tp5.1开始啊&#xff0c;就取消了下载压缩包安装的方法&#xff0c;那么我们如何进行下载呢&#xff1f; tp5.1的手册中开始就有提到tp5.1框架有两种安…

TP5.0框架上手准备

活到老学到老,祝上手顺利 1:首先需要安装并调试 方法一&#xff1a;在官网:[地址](http://www.thinkphp.cn),下载完整版的TP框架放在对应的www目录下; 方法二&#xff1a;利用composer进行安装&#xff0c;下载安装composer后&#xff0c;在DOS窗口切换到对应目录下输入&#x…

tp6企业级开发框架

项目介绍 一款 PHP 语言基于 ThinkPhp6.x、Layui、MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架&#xff0c;可用于快速搭建前后端分离后台管理系统&#xff0c;本着简化开发、提升开发效率的初衷&#xff0c;框架自研了一套个性化的组件&am…

K8S云原生环境渗透学习

转载至​​​​​​K8S云原生环境渗透学习 - 先知社区 K8S云原生环境渗透学习 前言 ​ Kubernetes&#xff0c;简称k8s&#xff0c;是当前主流的容器调度平台&#xff0c;被称为云原生时代的操作系统。在实际项目也经常发现厂商部署了使用k8s进行管理的云原生架构环境&#x…

day3----部署duboo微服务值部署zk和Jenkins(3)

部署zk集群 Zookeeper是Dubbo微服务集群的注册中心 它的高可用机制和k8s的etcd集群一致 由java编写&#xff0c;所以需要jdk环境主机名角色iphdss7-11.host.comk8s代理节点1&#xff0c;zk110.4.7.11hdss7-12.host.comk8s代理节点2&#xff0c;zk210.4.7.12hdss7-21.host.comk…

项目系统配置软件

(一)配置阿里镜像源################################################################################### 打开虚拟机跟随下面的连接操作即可将linux部署到阿里https://developer.aliyun.com/mirror/centos?spma2c6h.13651102.0.0.3e221b11h7vSuM (二)为linux安装jdk(windo…