使用不同的UIStoryboard获取Custom UITableViewCell的高度

时间:2014-11-20 10:28:59

标签: ios objective-c uitableview uistoryboard

对于我不使用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文件中加载高度。

1 个答案:

答案 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"];
}