ios中uitableview显示两列或多列数据

转载 2015年11月19日 11:11:18

我们知道在ios6以后,系统多了个UICollectionView可以显示多列数据,就像android的gridview,那么在ios6以前,我们如何实现呢?这里,我们通过一个tableview来实现。

它的原理是这样的,总共有多少条数据,除以要显示的列数,用来定义cell的行数,然后在一行中初始化这行中有多少列数据。。。。。。。

写个简单点的DEMO。。。结构如下:


这里,我们先定义一个头文件,InfoConfig.h,在这个头文件里我们定义相关的宏。。。

[objc] view plaincopy
  1. #ifndef TestTableTwoRow_InfoConfig_h  
  2. #define TestTableTwoRow_InfoConfig_h  
  3.   
  4.   
  5.   
  6. #define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)  
  7.   
  8. #define rowcellCount 2  
  9. #define RMarginX 0  
  10. #define RMarginY 0  
  11.   
  12. #endif  

然后我们定义一个数据模型SubCollectionsInfo类,这里只是封装了一些属性,提供set/get方法。。。。

[objc] view plaincopy
  1. @interface SubCollectionsInfo : NSObject  
  2. {  
  3.   
  4.       
  5.     NSString *_iconString;  
  6.     NSString *_niandaiString;  
  7.     NSString *_titleString;  
  8.     NSString *_contentString;  
  9.     NSString *_xmlFile;  
  10.     NSString *_idString;  
  11.     NSString *_nbidString;  
  12.     NSString *_timenmString;  
  13.     NSString *_stimeString;  
  14.     NSString *_etimeString;  
  15.     NSString *_zipFile;  
  16.     NSString *_md5String;  
  17.   
  18. }  
  19.   
  20.   
  21. @property(nonatomic,copyNSString *iconString;  
  22. @property(nonatomic,copyNSString *niandaiString;  
  23. @property(nonatomic,copyNSString *titleString;  
  24. @property(nonatomic,copyNSString *xmlFile;  
  25. @property(nonatomic,copyNSString *idString;  
  26. @property(nonatomic,copyNSString *contentString;  
  27. @property(nonatomic,copyNSString *nbidString;  
  28. @property(nonatomic,copyNSString *timenmString;  
  29. @property(nonatomic,copyNSString *stimeString;  
  30. @property(nonatomic,copyNSString *etimeString;  
  31. @property(nonatomic,copyNSString *zipFile;  
  32. @property(nonatomic,copyNSString *md5String;  
  33.   
  34. @property(nonatomic,assign) BOOL isselected;  
  35. @property(nonatomic,assign) BOOL isdownload;  
  36.   
  37. @end  

然后我们自定义一个tablecell继承于UITableViewCell,,,封装一个view,用来展示我们的界面

。。。。。具体可以看代码

最后,我们初始化一个tableview,加载相应的数据上去。。。

[objc] view plaincopy
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.       
  6.     if (iPhone5) {  
  7.           
  8.         self.view.frame=CGRectMake(0,0320568);  
  9.           
  10.     }else  
  11.     {  
  12.           
  13.         self.view.frame=CGRectMake(0,0320480);  
  14.           
  15.     }  
  16.       
  17.     [self.view setBackgroundColor:[UIColor whiteColor]];  
  18.       
  19.       
  20.     self.navigationItem.title=@"大帝";  
  21.       
  22.     [self initData];  
  23.     [self initUI];  
  24.   
  25.       
  26. }  
  27.   
  28. -(void) initData  
  29. {  
  30.   
  31.   
  32.     dataArray=[[NSMutableArray alloc] init];  
  33.       
  34.     for (int i=0; i<10; i++)  
  35.     {  
  36.           
  37.         SubCollectionsInfo *info=[[SubCollectionsInfo alloc] init];  
  38.           
  39.         info.niandaiString=@"王子大人";  
  40.         info.titleString=@"大帝";  
  41.         info.contentString=@"好人";  
  42.         info.iconString=@"celltouxiang.jpg";  
  43.           
  44.         [dataArray addObject:info];  
  45.           
  46.         [info release];  
  47.           
  48.     }  
  49.   
  50.   
  51. }  
  52.   
  53.   
  54. -(void) initUI  
  55. {  
  56.   
  57.   
  58.     testTableView=[[UITableView alloc] init];  
  59.     [testTableView setFrame:CGRectMake(00self.view.frame.size.width,self.view.frame.size.height)];  
  60.     testTableView.separatorStyle=UITableViewCellSeparatorStyleNone;  
  61.     [testTableView setBackgroundColor:[UIColor clearColor]];  
  62.       
  63.     [self.view addSubview:testTableView];  
  64.   
  65.   
  66.     testTableView.dataSource=self;  
  67.     testTableView.delegate=self;  
  68.   
  69.   
  70.       
  71. }  
  72.   
  73. -(void)cellviewTaped:(UITapGestureRecognizer *)recognizer  
  74. {  
  75.       
  76.     int tag=[recognizer view].tag-8000;  
  77.       
  78.     NSLog(@"%d",tag);  
  79.       
  80.      
  81.       
  82. }  
  83.   
  84.   
  85. #pragma tableview  
  86. -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
  87. {  
  88.       
  89.       
  90.     return (dataArray.count-1)/rowcellCount+1;  
  91.       
  92.       
  93. }  
  94.   
  95. -(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  96. {  
  97.       
  98.     static NSString *CellIdentifier1 = @"Cell1";  
  99.       
  100.       
  101.     SubCollectionsCell2 *cell =(SubCollectionsCell2 *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier1];  
  102.       
  103.     if (cell == nil)  
  104.     {  
  105.           
  106.         cell = [[[SubCollectionsCell2 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1] autorelease];  
  107.           
  108.         cell.backgroundColor=[UIColor clearColor];  
  109.     }  
  110.       
  111.       
  112.     NSUInteger row=[indexPath row];  
  113.       
  114.       
  115.     SubCollectionsInfo *subInfo=nil;  
  116.       
  117.     for (NSInteger i = 0; i < rowcellCount; i++)  
  118.     {  
  119.           
  120.         //奇数  
  121.         if (row*rowcellCount+i>dataArray.count-1)  
  122.         {  
  123.               
  124.             break;  
  125.               
  126.               
  127.         }  
  128.           
  129.         subInfo=[dataArray objectAtIndex:row*rowcellCount + i];  
  130.           
  131.         if (i==0)  
  132.         {  
  133.               
  134.             [cell.cellView1.iconImageView setImage:[UIImage imageNamed:subInfo.iconString]];  
  135.             [cell.cellView1.niandaiLabel setText:subInfo.niandaiString];  
  136.             [cell.cellView1.titleLabel setText:subInfo.titleString];  
  137.             [cell.cellView1.contentLabel setText:subInfo.contentString];  
  138.             cell.cellView1.tag=8000+row*rowcellCount + i;  
  139.               
  140.             UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cellviewTaped:)];  
  141.             [ cell.cellView1 addGestureRecognizer:tapRecognizer];  
  142.             [tapRecognizer release];  
  143.               
  144.         }  
  145.         else  
  146.         {  
  147.               
  148.             [cell.cellView2.iconImageView setImage:[UIImage imageNamed:subInfo.iconString]];  
  149.             [cell.cellView2.niandaiLabel setText:subInfo.niandaiString];  
  150.             [cell.cellView2.titleLabel setText:subInfo.titleString];  
  151.             [cell.cellView2.contentLabel setText:subInfo.contentString];  
  152.             cell.cellView2.tag=8000+row*rowcellCount + i;  
  153.               
  154.             UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cellviewTaped:)];  
  155.             [ cell.cellView2 addGestureRecognizer:tapRecognizer];  
  156.             [tapRecognizer release];  
  157.               
  158.               
  159.         }  
  160.           
  161.           
  162.     }  
  163.   
  164.       
  165.     cell.selectionStyle = UITableViewCellSelectionStyleNone;  
  166.       
  167.       
  168.     return cell;  
  169.       
  170. }  
  171.   
  172.   
  173. -(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath  
  174. {  
  175.       
  176.     //    UITableViewCell *cell=[self tableView: tableView cellForRowAtIndexPath: indexPath];  
  177.     //  
  178.     //  
  179.     //    return cell.frame.size.height;  
  180.       
  181.       
  182.     return 160;  
  183.       
  184.       
  185. }  
  186.   
  187.   
  188.   
  189. - (void)dealloc  
  190. {  
  191.       
  192.     [super dealloc];  
  193.       
  194.       
  195.     [testTableView release];  
  196.       
  197. }  
  198.   
  199.   
  200.   
  201. - (void)didReceiveMemoryWarning  
  202. {  
  203.     [super didReceiveMemoryWarning];  
  204.     // Dispose of any resources that can be recreated.  
  205. }  
  206.   
  207. @end  

效果如下图:



相关文章推荐

ios中uitableview显示两列或多列数据

我们知道在ios6以后,系统多了个UICollectionView可以显示多列数据,就像android的gridview,那么在ios6以前,我们如何实现呢?这里,我们通过一个tableview来实现...

ios中uitableview显示两列或多列数据

我们知道在ios6以后,系统多了个UICollectionView可以显示多列数据,就像android的gridview,那么在ios6以前,我们如何实现呢?这里,我们通过一个tableview来实现...

ios开发——用UITableView展示多行多列图片

有时我们可能需要用UITableView通过自定义Cell的方法来展示多行多列的图片,实现类似与UICollect

iOS- 显示数据列表最常用的一个控件UITableView

相信做过iOS的程序员,最熟悉的控件一定少不了UITableView,最常用的控件也一定少不了UITableView!今天分享一下自己对UITableView的实现大体思路,和整理出来的学习笔记!1....

IOS-UITableView数据独立

  • 2015-05-24 18:55
  • 424B
  • 下载

UITableView 分页显示、加载更多,数据源远程数据,解析JSON,以及iOS☞Category

在这篇里,我们要学习的目标: 1. 解析远程的JSON数据2. 分页显示数据3. 学习Category的使用 概述     IOS5.0开始支持JSON,所以不用第三方的解析了,主要...

Repeater多行多列显示数据的方法

今天在编写往期目录的时候需要绑定数据库,并且实现多行显示,实在是不想用GridView控件,想到了用Repeater,但是多行多列显示搞不定。 百度到了个方法,存下。          &#...

DropDownlist的Item显示多列数据

使用OnDataBound事件重写它的Text绑定。 数据源是一个XML文件,放在Web 程序的App_Data目录下: Users xml version="1.0" encoding="ut...

GridView 合并单元格(多列)及特定条件的数据高亮显示实现

效果图如下:  代码: Tim Demo 演示 后台: using ...

Repeater也能多行多列显示数据!!

刚在用到显示数据时,不想用到gridview,因为那个复杂了,就想简单点的就好, 就想到用repeater 但是当我一用时,有一个不娞,它不能多行显示数据,    后面在网上查了一下,找到,这个方...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)