一、UITableViewCell有哪些属性,怎么看, 1.可以按住command键,点开这个UITableView,看到如下界面: 这个时候,文字比较大,你可能看起来不是很清楚,这个时候,可以点击左上角的xcode,选择Preference, 让它变小一些, 文字变小,变成12以后,这些属性,是不是对的很齐啊 这时候,我们单元格所有的属性,都可以看到,比如说,第一个是什么, 1)imageView, 2)textLabel, 3)detailTextLabel, 4)contentView, 5)backgroundView, 6)selectedBackgroundView, 7)multipleSelectionBackgroundView,多选时的背景view, 是不是有这么多的属性, 每一个属性,一个一个的都可以看, 所以说,你直接在这里,就能找到它的属性, 不需要打开帮助啥的,这里也有简单的注释嘛, 所以说,当你把这个字体放的很大的时候,你会眼花缭乱,看不清,把字体放小一些的时候,就可以很清楚的看到人家这个代码注释了 二、那么,接下来,我们就来说另外一个问题,单元格的重用, 1.我们这里有三个数据源方法: 1)numberOfSectionsInTableView:返回多少个组, 2)numberOfRowsInSection:返回每组有多少个行, 3)cellForRowAtIndexPath:返回每一组每一行的单元格, 我在每个数据源方法里,都打印一句话,看看这些数据源方法,什么时候调,调几次, - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ NSLog(@“numberOfSectionsInTableView”); return 1; } 只要调这个方法,就会打印这句话, - (UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ NSLog(@“numberOfRowsInSection-----组索引:%ld”,section); return self.heros.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@“cellForRowAtIndexPath--------组索引:%ld,行索引:%ld”,(long)indexPath.section,(long)indexPath.row); //1.获取模型数据 CZHero *model = self.heros[indexPath.row]; //2.创建单元格 UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil]; //3.把模型数据设置给单元格 cell.imageView.image = [UIImage imageNamed:model.icon]; } 这样我们每次调这个方法的时候,就能打印组索引和行索引吧, 我们现在重新运行一下看看每一个方法调用多少次,每一个组索引和行索引是多少, 我们运行起来之后,发现numberOfSectionsInTableView,这里调了一次, 然后呢,numberOfRowsInSection,这里调了一次, 因为整体就一组,所以说,组索引就是0, 看前面六行,这两个方法一共就调了三次, 这两个方法,每个方法调了三次, 程序运行起来之后,UITableView问了三次数据源对象,现在一共有几个组啊,现在一共有几个组啊,现在一共有几个组啊,一共问了三次, 先是问现在一共有几个组,然后又问第0组有几行啊, 然后又问了一次,现在一共有几个组啊,第0组有几行啊, 然后又问了一次,现在一共有几个组啊,第0组有几行啊, 接下来,我们这个数据源方法,就是TableView返回TableView中每一个单元格的这么一个方法,这个数据源方法被调了几次, 被调了六次, 因为现在只有1个组,没有分多组,所以组索引始终都是0, 在显示第0组第0行的时候,TableView问它:第0组第0行应该显示什么样的单元格呢,又调这个数据源方法,又返回一个单元格, 在显示第0