我在TableView
中有以下单元格。
最初,我为0
标签指定了高度Promotion
,并将其值设为硬编码10美元。
每当用户点击Promotion
按钮时,我的身高会更高,以显示Promotion
及其值并指定身高30
。
但是,我看到的唯一变化是,单元格的高度越来越大,第一个和第二个标签之间的空间越来越大,但我无法看到promotion label
。
这是我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellLastIdentifier = @"lastcell";
LastTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellLastIdentifier];
if (cell == nil)
cell = [[LastTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellLastIdentifier];
cell.subTotalLbl.text = [NSString stringWithFormat:@"$ %.02f", subtotal ];
cell.salesLbl.text = [NSString stringWithFormat:@"+$ %.02f", tax ];
if(isPromotionApplied)
{
cell.promotionLabelHeight.constant = 30;
cell.promotionValueLblHeight.constant = 30;
cell.promotionValueLbl.text = @"120";
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(isPromotionApplied)
return 140.0;
else
return 100.0;
}
- (void)applyPromoCode : (double)percent
{
isPromotionApplied = YES;
NSIndexPath* rowToReload = [NSIndexPath indexPathForRow:[sharedData.orderItems count] inSection:0];
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil];
[self.checkOutTableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationFade];
}
LastTableViewCell故事板
答案 0 :(得分:2)
检查销售税标签应具有促销标签的垂直底部约束的约束条件,促销标签应具有自定义单元格的垂直底部约束。
现在创建一个促销标签高度约束的IBOutlet,而不是show hide将高度设置为0和20
这是一个简短的演示 https://github.com/harshalrj25/stackoverFlowAnswers
答案 1 :(得分:1)
为此,您应在标签之间设置自动布局约束,并为promotionlbl
设置高度约束。
然后取出promotionlbl
高度约束的出口,并初步将约束常数设置为0,当您想要显示promotionlbl
时,再按照约定设置高度常数你的需要。