code
设置 UITableView – 高级
@property (nonatomic, retain) UITableView *myTableView;
// 创建 UITableView
self.myTableView = [[UITableView alloc] initWithFrame: self.view.frame];
[self.view addSubview: self.myTableView];
[_myTableView release];
self.myTableView.delegate = self;
self.myTableView.dataSource = self;
// 注册UITableViewCell
[self.myTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])];
protocol
UITableViewDataSource
delegate dataSource
※ 设置每个分区有多少行
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
switch (section) {
case 0:
return 10;
case 1:
return 20;
default:
return 3;
}
// NSDictionary *proDic = self.proArr[section];
// NSArray *cityArr = proDic[@"cityArr"];
// return cityArr.count;
}
※ 设置UITableViewCell
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.myTableView dequeueReusableCellWithIdentifier: NSStringFromClass([UITableViewCell class]) forIndexPath: indexPath];
cell.textLabel.text = @"myCell 文本"
return cell;
// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: NSStringFromClass([UITableViewCell class]) forIndexPath:indexPath];
// cell.textLabel.text = self.proArr[indexPath.section][@"cityArr"][indexPath.row][@"cityName"];
// return cell;
}
设置分区个数
- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
return 4;
// return self.proArr.count;
}
设置分区的标题
- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
switch (section) {
case 0:
return @"Haha";
case 1:
return @"Xixi";
default:
return @"Enen";
}
// return self.proArr[section][@"proName"];
}
设置分区的视图
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *view = [[[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 40)]autorelease];
view.backgroundColor = [UIColor cyanColor];
return view;
}
设置类似通讯录最右边的迷之条状物(A~Z)
- (nullable NSArray <NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return @[@"A", @"B", @"C"];
// NSMutableArray *titleArr = [NSMutableArray array];
// for (NSDictionary *dic in self.proArr) {
// NSString *title = dic[@"proName"]
// [titleArr addObject: title];
// }
// return titleArr;
}
UITableViewDelegate
delegate delegate
※ 设置每个cell的点击方法 void-->tab-->didS
// void-->tab-->didDes
保存之前点击的indexPath
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// NSLog(@"%ld", indexPath.row);
// NSLog(@"%ld", indexPath.section);
}
动态设置行高每个分区的头视图
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *view = [[[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 40)]autorelease];
view.backgroundColor = [UIColor cyanColor];
UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 150, 50)];
lable.text = @"分区标题";
[view addSubview:lable];
[lable release];
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
button.frame = CGRectMake(270, 0, 40, 40);
[button setTitle:@"更多" forState:UIControlStateNormal];
[view addSubview:button];
return view;
}
设置每个单元格的行高
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// indexPath.row
}
property
- rowHeight
行高
Method
reloadRowsAtIndexPaths:withRowAnimation: 单行刷新
low-code
设置 UITableView – 低级
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];
[self.view addSubview: tableView];
[tableView release];
// 设置行高
tableView.rowHeight = 100;
tableView.dataSource = self;
tableView.delegate = self;
设置TableViewCell – 低级
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// 设置重用的标志,一般来讲,一个种类的cell就设置一个相对应的重用标志
static NSString *reuse = @"reuse";
// 根据指定的重用标志,在重用池中找,是否有闲置的cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuse];
// 如果找到了闲置的cell,对象就不为空;如果没找到,cell保存了一个空值,空值的话,需要创建一个cell
if (!cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuse]autorelease];
}
cell.textLabel.text = @"Cell的文本";
cell.detailTextLabel.text = [NSString stringWithFormat:@"%第ld行的编号", indexPath.row];
cell.imageView.image = [UIImage imageNamed:@"cell上方的图片];
return cell;
}