如何以编程方式设置Tableview自定义单元格高度?

时间:2014-11-22 05:15:14

标签: ios objective-c uitableview

我创建一个包含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设置这个方法的高度。请给我解决方法。

3 个答案:

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

希望它有所帮助