对于我不使用UIStoryboards
的项目中的不同设备,我有不同的Auto Layout
。在UITableViewController
内,我有两个不同身高的UITableViewCells
。我正在尝试使用viewDidLoad
ProfileCell *profilCell =
(ProfileCell *)[self.myTableView dequeueReusableCellWithIdentifier:@"profileCell"];
fProfileHeight = profilCell.frame.size.height;
MenuCell *menuCell =
(MenuCell *)[self.myTableView dequeueReusableCellWithIdentifier:@"menuCell"];
fMenuHeight = menuCell.frame.size.height;
问题是,它与我在UIStoryboard
中设置的值不匹配。 CellIdentifier
也已设置,内容显示正确,我无法加载确切的tableRowHeight
。有人知道我能做什么吗?我也搜索了这个问题,但我找不到任何适合我的问题的东西。我也没有任何笔尖,否则我可以从nib文件中加载高度。
答案 0 :(得分:1)
您需要将单元格放入Xib接口文件中,然后
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
MenuCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"MenuCell"
owner:nil
options:nil] firstObject];
return cell.frame.size.height;
}
在放入Xib后,您需要将Nib注册为可重复使用的单元格。
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView registerNib:[UINib nibWithNibName:@"MenuCell" bundle:nil]
forCellReuseIdentifier:@"MenuCell"];
}