UITableView有两种风格:UITableViewStylePlain和UITableViewStyleGrouped。这两者操作起来其实并没有本质区别,只是后者按分组样式显示前者按照普通样式显示而已。大家先看一下两者的应用

1、首先我们介绍一下平铺的tableView,初始化一个tableView如下

  1. #pragma mark - 设置子视图
  2. - (void)setSubviews{
  3.  
  4. UITableView * table=[[UITableView alloc] initWithFrame:CGRectMake(, , self.view.frame.size.width, self.view.frame.size.height-) style:UITableViewStylePlain];
  5. self.tableView=table;
  6.  
  7. //设置数据源代理
  8. table.dataSource=self;
  9. //设置方法属性代理
  10. table.delegate=self;
  11.  
  12. [self.view addSubview:table];
  13.  
  14. }

tableView需要设置两个代理,而要作为tableView的代理必须实现其代理方法,并遵守协议

  1. /**
  2. tableView 代理功能:
  3. 1 需要告知展示数据的条数
  4. 2 需要告知展示的内容
  5.  
  6. 要想作为tableView的代理 需要遵守UITableViewDataSource 和 UITableViewDelegate两个协议
  7. */
  8.  
  9. @interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
  10.  
  11. /** 数据数组*/
  12. @property(nonatomic,strong) NSArray * dataArray;
  13.  
  14. /** tableView接口*/
  15. @property(nonatomic,weak) UITableView * tableView;
  16.  
  17. @end

2、我们通过当前的系统字体作为显示的内容,加载数据如下

  1. #pragma mark - 加载数据
  2. - (void)loadData{
  3. self.dataArray=[UIFont familyNames];
  4.  
  5. }

3、实现代理方法

  1. #pragma mark - UITableViewDatasSource
  2.  
  3. //返回记录条数
  4. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
  5.  
  6. return self.dataArray.count;
  7. }
  8.  
  9. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  10.  
  11. // 重复利用标识
  12. NSString * identy=@"JRCell";
  13.  
  14. //从缓冲池获取可以利用的cell
  15. UITableViewCell * cell=[tableView dequeueReusableCellWithIdentifier:identy];
  16.  
  17. //如果缓冲池没有可利用对象需要重新创建
  18. if (cell==nil) {
  19. cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identy];
  20.  
  21. cell.selectionStyle=UITableViewCellSelectionStyleNone;
  22.  
  23. }
  24.  
  25. cell.textLabel.text=self.dataArray[indexPath.row];
  26.  
  27. cell.textLabel.font=[UIFont fontWithName:self.dataArray[indexPath.row] size:];
  28.  
  29. return cell;
  30. }

4、效果图如下

  5、最简单的tableView 我们就做完了,但是在日常开发中,我们需要用到的功能不仅仅这么简单,有的时候cell是需要自定义的,下面我们完成一个美团列表展示自己定义的tableView

6、这里要求我们自定义美团列表cell,对于数据的加载和读取这里不做介绍,我们把重点放在如何自定义cell上面

① 我们先自定义一个cell,并且继承了UITableViewCell

② 然后我们向当前cell中拼接子视图

  1. #pragma mark - 增加子视图
  2. - (void) setSubview{
  3.  
  4. // 1 增加图标
  5. UIImageView * jrImageView=[[UIImageView alloc] initWithFrame:CGRectMake(, , kRowHeight-, kRowHeight-)];
  6. self.jrImageView=jrImageView;
  7. jrImageView.backgroundColor=[UIColor redColor];
  8. [self.contentView addSubview:jrImageView];
  9.  
  10. // 2 增加标题
  11. UILabel * titleLable=[[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(jrImageView.frame)+, , kWidth-CGRectGetMaxX(jrImageView.frame)-, )];
  12. titleLable.text=@"汉金城烤肉自助餐厅";
  13. titleLable.font=[UIFont boldSystemFontOfSize:];
  14. self.jrTitleLable=titleLable;
  15. [self.contentView addSubview:titleLable];
  16.  
  17. // 3 增加子标题
  18. UILabel * detailLable=[[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(jrImageView.frame)+, CGRectGetMaxY(titleLable.frame), kWidth-CGRectGetMaxX(jrImageView.frame)-, )];
  19. detailLable.text=@"汉金城烤肉自助餐厅汉金城烤肉自助餐厅汉金";
  20. detailLable.numberOfLines=;
  21. detailLable.font=[UIFont boldSystemFontOfSize:];
  22. detailLable.textColor=[UIColor grayColor];
  23. self.jrDetailLable=detailLable;
  24. [self.contentView addSubview:detailLable];
  25.  
  26. // 4 增加价格
  27. UILabel * priceLable=[[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(jrImageView.frame)+, CGRectGetMaxY(detailLable.frame), , )];
  28. priceLable.text=@"$2.9";
  29. priceLable.font=[UIFont boldSystemFontOfSize:];
  30. priceLable.textColor=[UIColor colorWithRed:/255.0 green:/255.0 blue:/255.0 alpha:];
  31. self.jrPriceLale=priceLable;
  32. [self.contentView addSubview:priceLable];
  33.  
  34. // 5 已售数量
  35. UILabel * sellLable=[[UILabel alloc] initWithFrame:CGRectMake(kWidth-, CGRectGetMaxY(detailLable.frame), , )];
  36. sellLable.text=@"已售1150";
  37. sellLable.font=[UIFont boldSystemFontOfSize:];
  38. sellLable.textColor=[UIColor grayColor];
  39. self.jrSellLable=sellLable;
  40.  
  41. [self.contentView addSubview:sellLable];
  42.  
  43. }

③ 我们需要对子视图开辟接口出来让外界访问

④ 定义方法初始化数据

  1. #pragma mark - 初始化数据
  2. - (void) initDataWithInfo:(Information *) info{
  3.  
  4. //设置图标
  5. self.jrImageView.image=[UIImage imageNamed:info.strPic];
  6.  
  7. //设置标题
  8. self.jrTitleLable.text=info.title;
  9.  
  10. //设置明细
  11. self.jrDetailLable.text=info.detailTitle;
  12.  
  13. //设置价格
  14. self.jrPriceLale.text=[NSString stringWithFormat:@"$%.1f",info.price];
  15.  
  16. //设置销量
  17. self.jrSellLable.text=[NSString stringWithFormat:@"销量%ld",info.soldNum];
  18.  
  19. }

⑤ 我们在代理方法里面,初始化我们自定义cell并且设置数据即可

  1. #pragma mark 返回cell
  2. - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  3.  
  4. NSString * identy=@"jrCell";
  5.  
  6. JRTableViewCell * cell=[tableView dequeueReusableCellWithIdentifier:identy];
  7.  
  8. if (cell==nil) {
  9.  
  10. cell=[[JRTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identy];
  11.  
  12. //设置选中样式为空
  13. cell.selectionStyle=UITableViewCellSelectionStyleNone;
  14.  
  15. }
  16.  
  17. //重新设置数据
  18. Information *info= self.dataArray[indexPath.row];
  19. [cell initDataWithInfo:info];
  20.  
  21. return cell;
  22.  
  23. }
作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

技术咨询:
 

IOS之导航控制器传值的更多相关文章

  1. iOS:导航控制器侧滑出栈实现

    介绍:在iOS中,导航控制器UINavigationController是默认实现左侧边缘侧滑手势出栈的,但是如果当开发者对导航控制器子控制实现自定义leftBaButtonItem时,这个侧滑功能就 ...

  2. IOS UINavigationController 导航控制器

    /** 导航控制器掌握: 1.创建导航控制器 UINavigationController *nav = [[UINavigationController alloc] initWithRootVie ...

  3. IOS中导航控制器的代理及隐藏控制器刚出现时的滚动条

    一.导航控制器的代理 1.UINavigationController的delegate属性 2.代理方法 1> 即将显示新控制器时调用 /* navigationController : 导航 ...

  4. IOS之导航控制器

    UINavigationController是用于构建分层应用程序的主要工具,主要采用栈形式来实现视图.任何类型的视图控制器都可放入栈中.在设计导航控制器时需要指定根视图即用户看到的第一个视图.根视图 ...

  5. iOS结合导航控制器和标签栏控制器

    <span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name=& ...

  6. iOS 隔离导航控制器

    题外话:最近这两个月一直很闲,项目上基本没有啥大的需求.对于程序员来说,如果没有需求其实是一件很难受的事情,之前好多次在项目中没事找事,该优化的优化,该整理的整理.可能好多程序员都遇到过与我类似的情况 ...

  7. iOS开发 — (UINaVigationController)导航控制器,界面传值

    UINavigationController 继承于 UIViewController , 以栈的方式管理所 控制的视图控制器 . 至少要有一个被管理的视图控制器 ,这个控制器我们称作导航控制器的根视 ...

  8. 利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值

    实验说明 (1)正向传值:比如A类里地值要传给B类用,就是我们先在A类中声明一个B类对象(当然B类头文件要import过来),然后把A类中得某个 值传递给B类中得某个值(所以需要在B类中先准备一个变量 ...

  9. IOS初级:导航控制器

    1.AppDelegate.m老生常谈了,创建window,创建根视图rootViewController - (BOOL)application:(UIApplication *)applicati ...

随机推荐

  1. 错误: No API token found for service account "default",

    [root@kubernetes-master pods]# kubectl create -f mysql.yaml Error from server (ServerTimeout): error ...

  2. 数据预处理:规范化(Normalize)和二值化(Binarize)

    注:本文是人工智能研究网的学习笔记 规范化(Normalization) Normalization: scaling individual to have unit norm 规范化是指,将单个的样 ...

  3. 关于void main()的误区

    很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的.C/C++ 中从来没有定义过void main( ) .C++ 之父 Bjarne Stroustrup 在他的主页上的 ...

  4. NOIP2018 RP++

    飞吧,不用看向地面. NOIP,RP++.

  5. C# 7.0特性与vs2017

    下面是关于在C#7.0语言中计划功能的说明.其中大部分功能在Visual Studio “15” Preview 4中能运行.现在是最好的试用时期,请记录下你们的想法. C#7.0语言增加了许多的新功 ...

  6. Python知识(5)--绘图

    Python学习变得很方便,不用任何安装一个浏览器也能够使用学习,比如Jupyter就是很好的一个网络工具,提供了编辑编译展示等强大的功能,网址如下: https://try.jupyter.org/ ...

  7. spring @Transactional注解无效

    <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jd ...

  8. 【scrapy】使用方法概要(二)(转)

    [请初学者作为参考,不建议高手看这个浪费时间] 上一篇文章里介绍了scrapy的主要优点及linux下的安装方式,此篇文章将简要介绍scrapy的爬取过程,本文大部分内容源于scrapy文档,翻译并加 ...

  9. 使用Device IO Control 讀寫 USB Mass Storage

    http://www.ezblog.idv.tw/Download/USBStorage.rar 這是一個不透過檔案系統,去讀寫USB Mass Storage 任何位置(包含FAT)的方式 首先需安 ...

  10. 达芬奇TI DVSDK之视频数据流过程分析

    作者:openwince@gmail.com 博客:http://www.cnblogs.com/tinz    本文的copyright归openwince@gmail.com所有,使用GPL发布, ...