UITabelView

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UITabelView相关的知识,希望对你有一定的参考价值。

  1 #import "RootViewController.h"
  2 
  3 @interface RootViewController ()<UITableViewDataSource,UITableViewDelegate>
  4 @property(nonatomic,strong)NSArray *dataSourceArray;
  5 @end
  6 
  7 @implementation RootViewController
  8 
  9 - (void)viewDidLoad {
 10     [super viewDidLoad];
 11     // Do any additional setup after loading the view.
 12     
 13     self.dataSourceArray = [NSArray arrayWithObjects:@"李曼",@"刘梦君",@"张秀洁",@"朱磊",@"孟德峰",@"张静",@"温哲", nil];
 14     
 15     //创建UITbaleView
 16     UITableView *tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];
 17    
 18     
 19     
 20 //    //设置一些常用的属性
 21 //    //设置行高
 22 //    tableView.rowHeight = 100;
 23 //    //设置分割线的颜色
 24 //    tableView.separatorColor = [UIColor redColor];
 25 //    //设置分割线的样式
 26 //    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
 27 //    //设置头部
 28 //    tableView.tableHeaderView = [[UIView alloc]initWithFrame:CGRectMake(0,0, 100, 100)];
 29 //    tableView.tableHeaderView.backgroundColor = [UIColor cyanColor];
 30 //    
 31 //    //设置尾部(要想显示出想要的那种分割开来的效果必须给tabelView设置代理)
 32 //    tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height - 100, 100, 100)];
 33 //    tableView.tableFooterView.backgroundColor = [UIColor brownColor];
 34     
 35     
 36     [self.view addSubview:tableView];
 37     
 38     
 39 #pragma mark - 设置代理(这是tableView非常重要的内容)
 40     //设置显示数据的代理(用于处理数据相关的内容)
 41     tableView.dataSource = self;
 42     //设置自身的代理(设置用于显示视图相关的内容)
 43     tableView.delegate = self;
 44     
 45 #pragma mark - cell的重用机制(非常重要)
 46     
 47     /*
 48      重用机制的流程:
 49      1.当一个cell被划出屏幕的时候,这个cell会被放置到重用池内
 50      2.当tableView要显示一个cell的时候先去重用池里去找
 51      3.当在重用池中找不到cell,此时需要新建cell
 52      4.如果找到cell,取出并赋值
 53      */
 54     //要实现重用有两种方式实现,先讲第一种
 55 #warning 第一种重用方式
 56     //第一种的第一步:注册一个cell[创建完tableView之后,需要注册cell](当重用池中没有cell的时候才需要注册cell)
 57     //参数1.是一个类,(当重用池中没有cell的时候开始创建cell类) 参数2:给重用池一个重用标识
 58     [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"reusedCell"];
 59     
 60 }
 61 #pragma mark - UITableViewDataSource代理方法
 62 //设置tableView每一个区里边有多少行
 63 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 64 {
 65     //了解:这个方法走的次数跟Xcode版本有关
 66     NSLog(@"numberOfRowsInSection:%s",__FUNCTION__);
 67     return self.dataSourceArray.count;
 68 }
 69 //设置每一个区的每一行的cell的样式
 70 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 71 {
 72     //查看调用了几次这个方法
 73     NSLog(@"cellForRowAtIndexPath:%s",__FUNCTION__);
 74     
 75     
 76     
 77     //第二步:根据重用标识去取重用的cell在这个地方使用
 78 //    //系统方法中封装了根据重用标识去取相关的cell
 79 //    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reusedCell"];
 80 //    //对cell进行一个内容的设置
 81 //    cell.imageView.image = [UIImage imageNamed:@"1.jpeg"];
 82 //    cell.textLabel.text = [NSString stringWithFormat:@"row:%ld",indexPath.row];
 83     
 84 #warning 第二种重用方式
 85     //第一步:从重用池里去取相应的cell
 86     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reusableCell"];
 87     //第二步:如果重用池中没有重用的cell,需要创建cell
 88     if (cell == nil) {
 89         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"reusableCell"];
 90     }
 91     //设置cell的内容
 92     cell.imageView.image = [UIImage imageNamed:@"1.jpeg"];
 93     cell.textLabel.text = [NSString stringWithFormat:@"row:%ld",indexPath.row];
 94     cell.textLabel.text = [self.dataSourceArray objectAtIndex:indexPath.row];
 95     
 96     /*
 97     //创建cell
 98     //UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
 99      //2.改为支持显示副标题的类型的cell
100     UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
101     //在这个代理方法里设置具体的cell的内容
102     //设置UITableViewCell中重要样式的三个属性
103     //cell.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.jpeg"]];
104     cell.imageView.image = [UIImage imageNamed:@"1.jpeg"];
105     //设置标题
106     cell.textLabel.text = @"朴智妍";
107     //设置副标,想要设置UITableViewCell的副标题,必须修改UITableView的一个样式,因为默认的是无副标题的
108     cell.detailTextLabel.text = @"美女";
109     //返回cell
110      */
111     return cell;
112 }
113 //设置有几个分区,默认的是一个
114 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
115 {
116     return 2;
117 }
118 
119 //设置头部的标题
120 -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
121 {
122     return [NSString stringWithFormat:@"section:%ld",section];
123      //return @"我们很嗨";
124 }
125 //设置尾部的标题
126 -(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
127 {
128      return @"好好学习";
129 }
130 
131 //设置右侧的索引
132 -(NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView
133 {
134     return @[@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"G",@"K",@"L",@"M",@"N",@"O",];
135 
136 }
137 #pragma mark  - UITableViewDelegate 的代理方法
138 //设置每一行的高度
139 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
140 {
141     //设置的是:每一个区里第一行的高度
142     if (indexPath.row == 0) {
143         return 100;
144     }
145     
146     return 50;
147 }
148 //设置每一个区头部的高度
149 -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
150 {
151     return 100;
152 }
153 //设置每一个区尾部的高度
154 -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
155 {
156     return 100;
157 }
158 @end

 

以上是关于UITabelView的主要内容,如果未能解决你的问题,请参考以下文章

带有部分的 UItabelview 内的多个 UICollectionviews - swift

UITabelView的Cell自适应高度

如何做优化,UITabelView才能更加顺滑

关于自转的问题

在 HeaderInSection 中查看大小不增加

UITableview到细胞细节与图像