我创建一个包含CustomCell的UITableview。我的CustomCell包含UITextView和其他一些控件,但我想将我的单元格高度设置为300,如果我的UITextViewtext包含一些文本,如果我的TextView文本包含空文本意味着没有任何文本然后我想我的单元格高度170如何可能。我为此编写了一个代码,但它无效。
我的代码如
NSString *magazineDescription=[self.firstArray valueForKey:@"long_description"];
if([magazineDescription isKindOfClass:[NSString class]])
{
cellOne.magazineDescriptionTextView.text = magazineDescription;
cellOne.frame=CGRectMake(0, 0, 300, 300);
}
else
{
cellOne.magazineDescriptionTextView.text = @"";
cellOne.magazineDescriptionTextView.hidden=TRUE;
cellOne.frame=CGRectMake(0, 0, 300, 170);
}
这里我的self.firstArray包含JSON数据值,有时候我的keyValue @“long_description”为null所以我想隐藏TextView From Cell并将Cell的高度设置为300到170,并且两个案例的宽度都要保持相同
我知道这个方法如:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
但是在这个方法中如何为这个Case设置这个方法的高度。请给我解决方法。
答案 0 :(得分:3)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText = @“Your text”;
UIFont *cellFont = [UIFont systemFontOfSize:YourFontSize];
CGSize constraintSize = CGSizeMake(TextviewWidth, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
NSLog(@"labelSize : %f", labelSize.height);
return labelSize.height;
}
答案 1 :(得分:0)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
//Fetch your string from array as below or according to your code
NSString *magazineDescription=[self.firstArray valueForKey:@"long_description"];
if(magazineDescription!=nil)
{
return 300.0f;
}
else
{
return 170.0f;
}
}
答案 2 :(得分:0)
首先,将CustomerCell声明为属性
@property (strong, nonatomic) CustomerCell *cell;
tableViewDelegate 中的
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([@"" isEqualToString:_cell.textView.text] || _cell.textView.text == nil) {
return 170;
} else {
return 300;
}
}
希望它有所帮助