虽然我在情节提要上增加 UITableViewCell 高度,但在设备或模拟器上看不到

Posted

技术标签:

【中文标题】虽然我在情节提要上增加 UITableViewCell 高度,但在设备或模拟器上看不到【英文标题】:Though i'm increasing UITableViewCell height on storyboard it is not seen on device or simulator 【发布时间】:2016-07-07 12:38:05 【问题描述】:

我在增加 tableView 的单元格高度时遇到问题,我在这里使用配置单元格和带有标签的图像视图。虽然我正在使用自定义行高在属性窗格中增加情节提要的高度,但它没有反映在模拟器或设备中。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

     UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
     cell.selectionStyle = UITableViewCellSelectionStyleNone;

     UIButton *detailbtn=[[UIButton alloc]initWithFrame:CGRectMake(230,96, 60, 30)];
     [detailbtn addTarget:self action:@selector(yourButtonClicked:) forControlEvents:UIControlEventTouchUpInside];     detailbtn.tag = indexPath.row;
     [detailbtn setImage:[UIImage imageNamed:@"btn-detail.png"] forState:UIControlStateNormal];
     [cell.contentView addSubview:detailbtn];

     UIButton *imageDetailbtn=[[UIButton alloc]initWithFrame:CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y+10,cell.frame.size.width, cell.frame.size.height-100)];
     [imageDetailbtn addTarget:self action:@selector(yourButtonClicked:) forControlEvents:UIControlEventTouchUpInside];     imageDetailbtn.tag = indexPath.row;
     [imageDetailbtn setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateHighlighted];
     [cell.contentView addSubview:imageDetailbtn];



     // [btn setTitle:@"Detail" forState:UIControlStateNormal];

     UIButton *likebtn=[[UIButton alloc]initWithFrame:CGRectMake(30,96, 110, 30)];
     [likebtn addTarget:self action:@selector(likeButtonClicked:) forControlEvents:UIControlEventTouchUpInside];    likebtn.tag = indexPath.row;
     [likebtn setImage:[UIImage imageNamed:@"btn-like.png"] forState:UIControlStateNormal];

     NSString *likes = [NSString stringWithFormat:@"%@",[self.devices valueForKey:@"total_likes"]];

     [likebtn setTitle:likes forState:UIControlStateNormal];

     [cell.contentView addSubview:likebtn];

     NSLog(@"sender.tag cell is % ld ",(long)detailbtn.tag);

     // Configure Table View Cell
     NSLog(@"indexpath is%ld",(long)indexPath.row);
     [self configureCell:cell atIndexPath:indexPath];

    return cell;



- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath 

    // Fetch Record
    NSManagedObject *record = [self.fetchedResultsController objectAtIndexPath:indexPath];

    // Update Cell
    //  [cell.textLabel setText:[record valueForKey:@"clip_name"]];

    UIImageView* imageView = (UIImageView*)[cell viewWithTag:110];
    [imageView sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",K_Server_imageurl,[record valueForKey:@"clip_image_path"]]]];

    UILabel *lbl=(UILabel*)[cell viewWithTag:111];

    [lbl setText:[record valueForKey:@"clip_name"]];

    lbl.textColor=[UIColor whiteColor];

【问题讨论】:

尝试在 -(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath return height_value; 中设置高度 @JennyJose 但是如果我增加故事板上的行高,它应该增加高度。 谢谢你的回答我会试试@JennyJose vicky检查我的详细答案 嘿维姬,我有你的问题。它也适用于故事板。检查我的更新 【参考方案1】:

实现 UITableViewDelegate 方法 tableView:heightForRowAtIndexPath:

如果它是你想要的静态高度,设置它

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

    return height_value;

在 Storyboard 中,只需确保设置了 Table 的行高。如果您只设置表格视图单元格的行高,则无关紧要。检查屏幕截图

【讨论】:

【参考方案2】:

打开 Storyboard 并选择您的单元格 -> 转到大小检查器 -> 选中行高复选框以启用自定义高度。否则它将使用默认高度。

见下图

或者

//重写下面的方法

-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
 
    //return float value
    //e.g. return 56;
    return height;
 

或者

如果所有行的高度相同,您也可以设置如下

 self.myTableView.rowHeight = 50;

【讨论】:

复制别人的答案不是一个好习惯!我可以轻松地 DOWNVOTE 你的答案,但我轻轻地请求你下次注意! @JennyJose 我知道你是伟大的开发者。但是请检查答案的时间。我们都同时添加了我们的答案,而且两者都不相似。如果您仍然认为它被复制了,请继续并 DOWNVOTE 我的答案。【参考方案3】:

如果要设置高度表视图单元格行使用

#pragma mark - UITableView Delegate Method

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

  return 44;  // It is the Default height of tableView
    or
  return yourHeightValue; //Whatever you want give here
 

从上面的编码

    UITableView 有一个名为rowHeight 的属性,您可以使用该属性将所有UITableViewCell 设置为相同的行高; 如果您实现了UITableViewDelegate 协议,并包含tableView:heightForRowAtIndexPath: 方法,则由您负责决定当前的UITableViewCell'height。在实践中,我们总是使用委托方法来设置单元格的高度,前提是每个单元格的高度可以是动态的!并且该方法优先于UITableViewrowHeight属性!

【讨论】:

以上是关于虽然我在情节提要上增加 UITableViewCell 高度,但在设备或模拟器上看不到的主要内容,如果未能解决你的问题,请参考以下文章

如何获取情节提要的缺失内容?

我在情节提要中的对象没有与代码正确链接

Xcode 5 是不是可以更改情节提要上的字体和大小?

XCODE:UIView 背景没有出现在屏幕上,即使我在情节提要中设置了颜色并以编程方式

在情节提要中居中

应用程序在模拟器上的显示与在情节提要中的不同