UITableView通过重用单元格来达到节省内存的目的:通过为每个单元格指定一个重用标识符(reuseIdentifier),即指定了单元格的种类,以及当单元格滚出屏幕时,允许恢复单元格以便重用.对于不同种类的单元格使用不同的ID,对于简单的表格,一个标识符就够了.
假如一个TableView中有10个单元格,但是屏幕上最多能显示4个,那么实际上iPhone只是为其分配了4个单元格的内存,没有分配10个,当滚动单元格时,屏幕内显示的单元格重复使用这4个内存。
如下代码:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier =@"CellIdentifier";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell==nil){
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
***//dequeueReusableCellWithIdentifier:方法查找是否有可以重用的单元格,如果没有则使用initWithStyle:reuseIdentifier:方法构造器创建一个可重用的单元格。***
NSUInteger row=[indexPath row];
NSDictionary *rowDict=[self.listTeams objectAtIndex:row];
cell.textLabel.text=[rowDict objectForKey:@"name"];
NSString *imagePath=[rowDict objectForKey:@"image"];
imagePath=[imagePath stringByAppendingString:@".png"];
cell.imageView.image=[UIImage imageNamed:imagePath];
cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
注:方法tableView:cellForRowAtIndexPath:是UITableViewDataSourse协议中必须实现的方法之一。