我遇到这个问题已经困难了2天。
我在故事板上有一个带UITableView的UIViewController。
但是我想重新设计自定义单元格,所以我使用Xib文件来设计单元格。
单元格包含一个标签,该标签在运行时获取内容,因此它的高度会有所不同。
我正在使用autolayout我有所有约束并将我的标签行设置为0;
-(void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.tableView.dataSource = self;
self.tableView.delegate = self;
[self.tableView registerNib:[UINib nibWithNibName:@"PostingTableViewCell" bundle: [NSBundle mainBundle]] forCellReuseIdentifier:@"PostingCell"];
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"PostingCell";
self.customCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (self.customCell == nil)
{
self.customCell = [[PostingTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSDictionary *post = [self.posts objectAtIndex:indexPath.section];
NSString *contentString = [post objectForKey:@"content"];
self.customCell.contentLabel.text = contentString;
self.customCell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth(tableView.bounds), CGRectGetHeight(self.customCell.bounds));
[self.customCell setNeedsLayout];
[self.customCell layoutIfNeeded];
CGFloat height = [self.customCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
return height;
}
当我将自定义单元格放在故事板中的tableViewController上时,我的代码有效,但当我将其迁移到xib文件时,tableviewcell的高度不再调整。
这是我的xib文件和约束的屏幕截图
这是我的cellForRowAtIndexPath方法:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"PostingCell";
PostingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSDictionary *post = [self.posts objectAtIndex:indexPath.section];
NSString *contentString = [post objectForKey:@"content"];
cell.contentLabel.text = contentString;
}
模拟器截图
当我将高度硬编码到下面的150截图时:
答案 0 :(得分:0)
我仍然不确定你为什么要在heightForRowAtIndexPath
static NSString *CellIdentifier = @"PostingCell";
self.customCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (self.customCell == nil)
{
self.customCell = [[PostingTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
试试这个 1.在xib中调整单元格的高度。 2.尝试这样的事情
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return self.customCell.bounds.size.height;
}