UITableView的cell的绘制时的函数的调用顺序,是先调用
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
返回tableView的行,然后调用
-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
最后调用
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
所以,需要先计算好cell的高度。在回调函数时返回变量就行了;
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, strong) NSMutableArray *dataArray;
@property (nonatomic, strong) UITableView *myTableView;
@end
@implementation ViewController
@synthesize dataArray=_dataArray;
@synthesize myTableView=_myTableView;
- (void)viewDidLoad
{
[super viewDidLoad];
_dataArray=[[NSMutableArray alloc]initWithObjects:@"cell",
@"cellcellcell",
@"cellcellcellcellcell",
@"cellcellcellcellcellcellcell",
@"cellcellcellcellcellcellcellcellcell",
@"cellcellcellcellcellcellcellcellcellcellcell",
@"cellcellcellcellcellcellcellcellcellcellcellcellcellcell",
@"cellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcell",
@"cellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcell",
@"cellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcellcell",
nil];
_myTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain];
_myTableView.delegate=self;
_myTableView.dataSource=self;
[self.view addSubview:_myTableView];
[UIApplication sharedApplication].statusBarHidden=NO;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"1");
return self.dataArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *indentifer=@"cell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:indentifer];
if (cell == nil)
{
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
UIFont *font=[UIFont systemFontOfSize:14];
NSString *content=[_dataArray objectAtIndex:indexPath.row];
cell.textLabel.text=content;
cell.textLabel.numberOfLines=0;
cell.textLabel.font=font;
}
NSLog(@"2");
return cell;
}
-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
int row=indexPath.row;
CGFloat contentWidth = self.view.frame.size.width;
//
UIFont *font = [UIFont systemFontOfSize:14];
//
NSString *content = [_dataArray objectAtIndex:row];
//
CGSize size = [content sizeWithFont:font constrainedToSize:CGSizeMake(contentWidth, 1000.0f) lineBreakMode:UILineBreakModeWordWrap];
NSLog(@"3");
//
return size.height+20;
}