现在,如果我得到任何值nil
,我会隐藏该标签
问题:
但是,当我隐藏该标签时,它显示空白
这是mycode ::
let dic = finalcarexpense.objectAtIndex(indexPath.row) as! NSDictionary
if lastcruisebool == true
{
cell.lblcruisecontroll.text = (dic["cruise_control"] as? String)!
}
else
{
cell.lblcruisecontroll.hidden = true
cell.placecruisecontrol.hidden = true
}
if lastremotebool == true
{
cell.lblremotecentrallocking.text = (dic["remote_central_locking"] as? String)!
}
else
{
cell.lblremotecentrallocking.hidden = true
cell.placeremotecentrallocking.hidden = true
}
if lastacbool == true
{
cell.lblairconditioning.text = (dic["air_conditioning"] as? String)!
}
else
{
cell.lblairconditioning.hidden = true
cell.placeac.hidden = true
}
if lastbluetoothbool == true
{
cell.lblbluetooth.text = (dic["bluetooth"] as? String)!
}
else
{
cell.lblbluetooth.hidden = true
cell.placebluetooth.hidden = true
}
if lastradiocdbool == true
{
cell.lblradiocd.text = (dic["radio_cd"] as? String)!
}
else
{
cell.lblradiocd.hidden = true
cell.placeradiocd.hidden = true
}
if lastpowerbool == true
{
cell.lblpowersteering.text = (dic["power_steering"] as? String)!
}
else
{
cell.lblpowersteering.hidden = true
}
所以有任何解决方案,我应该设置UILabel
hieght 0 ??或者我应该使用UITableViewCell
??
答案 0 :(得分:1)
您不应该有单个单元格来容纳要显示的所有行/项目。如果您有这样的话,则很难管理标签之间的空白区域。
即使您将标签的值设置为nil,也必须调整标签之间的垂直间距约束。这是一个复杂的问题。
最好采用以下方法。
清除UITableView分隔符颜色
每行/单元格应重用单个原型单元格。 1个单元格。
使用UITableViewDelegate的方法
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
If(indexPath.row should be should not be shown){
return 0;//for hiding the row
}
return Default Height Of row;
}
我希望将来会有人利用它。
答案 1 :(得分:1)
答案 2 :(得分:1)
您可以给出uilabel高度约束,并且可以在运行时设置为0。你也可以将它设置为0,这样就不可见了 感谢
答案 3 :(得分:0)
最好的解决方案是使用表格更改您的架构。实际上,您应该更改单元格的数量。您需要在模型中存储数据,它甚至可能是一个数组,您的表应该是数据的显示,如果不需要单元格,则将其从模型中删除并重新加载表。为此,您需要对单元格使用Dynamic Prototypes
,并使用此方法:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return yourDataModel.count
}
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("YourCell", forIndexPath: indexPath) as! YourCellController
return cell
}
阅读本教程A similar issue was documented here.,以便更好地了解如何操作
答案 4 :(得分:0)
可以制作一个解决方案(使用NSLayoutConstraint的常量属性)IBOutlet连接所有标签的高度并将其高度设置为零。这将删除你的间距。
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentViewHeightConstraint;
离。 lblairconditioningCostraintHeight.constant = 0
检查地址字段的高度高度约束。我为此制作了IBOutlet,如果地址很大,它会自动推送所有标签,反之亦然。
并在cellForRowAtIndexPath方法中设置标签高度ZERO,如果label.hope中没有文本可以帮助您。