虽然我在情节提要上增加 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
。在实践中,我们总是使用委托方法来设置单元格的高度,前提是每个单元格的高度可以是动态的!并且该方法优先于UITableView
的rowHeight
属性!
【讨论】:
以上是关于虽然我在情节提要上增加 UITableViewCell 高度,但在设备或模拟器上看不到的主要内容,如果未能解决你的问题,请参考以下文章