创建一个tableView,直接拖拽放在storyboard里面就可以。

(1)先创建一个数据模型类WSCarGroup,在WSCarGroup.h文件里:

#import <Foundation/Foundation.h>

@interface WSCarGroup : NSObject

@property(nonatomic,copy) NSString * title;
@property(nonatomic,copy) NSString * desc;
@property(nonatomic,strong) NSArray *cars; @end

(2)在ViewController.m中:

——先把数据转成模型,这里没有plist。所以直接手动输入。

先声明一个装模型的数组变量

@property (nonatomic,strong) NSArray *carGroups;

-(NSArray *)carGroups{
if (_carGroups==nil) {
WSCarGroup *cg1=[[WSCarGroup alloc]init];
cg1.title=@"德系汽车";
cg1.desc=@"质量最精良";
cg1.cars=@[@"宝马",@"奥迪",@"奔驰"]; WSCarGroup *cg2=[[WSCarGroup alloc]init];
cg2.title=@"日系汽车";
cg2.desc=@"非常轻非常省油";
cg2.cars=@[@"三菱",@"日产",@"本田",@"三菱",@"日产",@"本田",@"三菱",@"日产",@"本田",@"三菱",@"日产",@"本田"]; _carGroups=@[cg1,cg2];
}
return _carGroups;
}

——设置tableView的数据源,和协议相似。充当数据源的要遵守“协议”。此处我们把ViewController当做数据源。所以先遵守:

@interface ViewController ()<UITableViewDataSource>

——然后设置成数据源

- (void)viewDidLoad {
self.tableView.dataSource=self;
[super viewDidLoad];
}

——tableView最重要的几个方法

111、设置多少组(假设省略这种方法,则默认是1组)

222、设置每组有多少行

333、设置每行的cell填充什么内容(最重要)

444、设置每组头部标题文字

555、设置妹婿尾部描写叙述文字

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return self.carGroups.count;
} -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
WSCarGroup *cg=self.carGroups[section];
return cg.cars.count;
} -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//由于要返回UITableViewCell。所以先创建一个,然后赋值,最后返回,就可以。
UITableViewCell *cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
WSCarGroup *cg=self.carGroups[indexPath.section];
cell.textLabel.text=cg.cars[indexPath.row];
return cell;
} -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
WSCarGroup *cg=self.carGroups[section];
return cg.title;
} -(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
WSCarGroup *cg=self.carGroups[section];
return cg.desc;
}

——当然。为了展示方便,隐藏顶部状态栏

-(BOOL)prefersStatusBarHidden{
return YES;
}

tableView有两种展现形式:plain和grouped。

——plain就是每组之间间隔非常小,分组不明显。grouped每组间隔大分组明显。例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Vpc3ViYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Vpc3ViYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

——plain有头部悬停效果。相似于QQ分组好友的那个组名称在最顶部悬停,直到被下一组顶替。

【iOS开发-58】tableView初识:5个重要方法的使用和2种样式的差别的更多相关文章

  1. iOS开发-项目的完整重命名方法,图文教程。

    前言:在IOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦.直接改项目名吧,XCODE又不会帮你改所有的名字.总是有很多文件.文件夹或者是项目设置的项.而且都是不能随便改的,有时候改着改着,编译 ...

  2. ios开发runtime学习二:runtime交换方法

    #import "ViewController.h" /* Runtime(交换方法):主要想修改系统的方法实现 需求: 比如说有一个项目,已经开发了2年,忽然项目负责人添加一个功 ...

  3. ios开发之--tableview刷新某一个区和某一行

    在开发中,有时候,我们不需要刷新整个表,只需要刷新局部数据即可,具体代码如下: //section刷新 NSIndexSet *indexSet=[[NSIndexSet alloc]initWith ...

  4. [IOS 开发]TableView如何刷新指定的cell 或section

    //一个section刷新 NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:]; [tableview reloadSections:ind ...

  5. ios开发之--tableview单选/多选实现(非tableview的editing状态)及默认选中

    实现思路比较简单,这里仅做记录: 直接上代码: 1,实现didSelectRowAtIndexPath方法 -(void)tableView:(UITableView *)tableView didS ...

  6. ios开发之-- tableview/collectionview获取当前点击的cell

    方法如下: 一般collectionView 或者 tableview都有自带的点击函数,如下: , collectionView -(void)collectionView:(UICollectio ...

  7. IOS开发之 -- 线程初识

    对于开发者来说,多线程永远有这一层神秘的色彩,似乎是一到迈步过去的坎,在同步.异步.串行.并行.死锁这几个名字当中,逐渐的放弃治疗,下面就多线程,谈一下自己的认识,理解的肯定不全面,只是一些简单的皮毛 ...

  8. iOS开发之巧用Block和代理方法结合来传值

    好久没写技术博客了,因为996的工作周期已经持续好几个月了.每天晚上回家都没有太多精力学习很多其他的东西,而且很多时候是接着完善工作的项目的模块开发.所以博客停歇了这么久,更新率也低了不少,今天补充一 ...

  9. (转)iOS开发——来改掉那些被禁用的方法吧(持续更新中)

    iOS平台在快速的发展,各种接口正在不断的更新.随着iOS9的发布,又有一批老方法不推荐使用了,你若调用这些方法,运行的结果是没有问题的,但是会出现警告“***is deprecated :first ...

随机推荐

  1. 使用mysql监视器即命令行下的mysql

    命令行下登录mysql 首先必须在alias下有设置mysql, 我的mysql安装的位置在/usr/local/mysql 于是做了一个别名: alias mysql='/usr/local/mys ...

  2. Educational Codeforces Round 20 D. Magazine Ad

    The main city magazine offers its readers an opportunity to publish their ads. The format of the ad ...

  3. showModalDialog实现本页面内部跳转

    showModalDialog的弹窗中,要实现本窗口跳转而不打开新窗口,要么submit提交,要么按如下跳转,而不能采用location=xx来跳转:function go_link(url) {   ...

  4. POJ2594Treasure Exploration(最小路径覆盖,相交)

    Treasure Exploration Have you ever read any book about treasure exploration? Have you ever see any f ...

  5. mybatis foreach Map(String,List)类型

    <select id="queryList" resultType="com.performancetest.modules.ptest.entity.Stress ...

  6. PHP中的验证码类(验证码功能设计之二)

    运行结果: <!--vcode.class.php内容--> <?php class Vcode { private $width; //宽 private $height; //高 ...

  7. 处理登录和cookie

    做法 1: 可以一步一步cookies,毫无疑问,这非常麻烦. import requests params = {'',''} r = requests.post('',params) r = re ...

  8. hdu 1007 Quoit Design 分治求最近点对

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  9. Road(bzoj 2750)

    Description C国有n座城市,城市之间通过m条单向道路连接.一条路径被称为最短路,当且仅当不存在从它的起点到终点的另外一条路径总长度比它小.两条最短路不同,当且仅当它们包含的道路序列不同.我 ...

  10. 【eclipse】设置默认编码格式为UTF-8

    需要设置的几处地方为: Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8 Window ...