继承关系:
UITableView -> UIScrollView -> UIView
协议方法:
UITableViewDataSource
UITableViewDelegate
UITableViewDataSource:
@required:
1.控制每个分区的行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
2.只要操作tableview就会触发此协议方法,完成对cell的创建和赋值的作用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
-
// NSIndexPath 它提供了到嵌套数列的树中特定节点的路径,有两个属性:row行, section区间
// 创建UITableViewCell 步骤:
// 1.指定一个重用标志的字符串
static NSString *reuse = @"reuse"; // 全局静态区, reuse重用
// 2.tableView根据指定的重用标志,在重用池里寻找 有没有闲置的cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuse];
// 3.如果没有闲置的cell,需要创建一个cell
if (!cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuse] autorelease];
NSLog(@"create");
}
// 4. 对cell上的属性进行赋值
cell.textLabel.text = self.arr[indexPath.row]; //addObject
cell.detailTextLabel.text = @"222";
cell.imageView.image = [UIImage imageNamed:@"h12.jpeg"];
NSLog(@"%ld", indexPath.row);
return cell;
- }
@optional :
1.tableView上的索引,类似通讯录A,B,C,D….
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
2.指定当前tableview分区数量
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
3.设置分区标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
4.每次点击cell时触发
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
-
- // 通过点击位置找到cell对象
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSLog(@"%@", cell.textLabel.text);}
5.更多效果
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
6.分别设置每行行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
7.分区的高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section