2015-12-23 11 views
0

У меня есть страница, как этот all values are in UIlabelКак установить высоту uilabel на 0. или высоту uitbleviewcell до 0?

Теперь, если я получил какое-либо значение nil я скрываю этот ярлык

Проблема:

Но когда я скрыть эту метку она показывает пустое пространство

showing blank space

здесь 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

Вместо установки 'Height' 0, вы должны фильтровать массив, который содержит данные –

+0

но данные не приходит в массив @ HamzaAnsari –

+0

его приходит на основе на котором пользователь выбирает @ HamzaAnsari –

ответ

1

Вы можете задать ограничение ширины uilabel и установить значение 0 во время работы. а также вы можете установить его кадр 0, поэтому он будет невидимым Благодаря

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 
} 

Читайте, например, этот учебник http://www.techotopia.com/index.php/Using_Storyboards_and_Swift_to_Build_Dynamic_TableViews_with_Prototype_Table_View_Cells, чтобы лучше понять, как это сделать

0

Одним из решений может быть сделать (Использование NSLayoutConstraint постоянной свойство) IBOutlet соединение высоты всех меток и установка их нулевой высоты. это приведет к удалению интервала.

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentViewHeightConstraint; 

ex. lblairconditioningCostraintHeight.constant = 0

enter image description here

Проверить высота высота ограничение для поля адреса. Я сделал IBOutlet для этого, если если адрес большой, он автоматически выталкивает все ярлыки и наоборот.

и установить высоту надписи ZERO в cellForRowAtIndexPath, если текст в label.hope вам не поможет.

0

Вы не должны иметь отдельную ячейку для хранения всех строк/элементов для отображения. Если у вас это так, то очень сложно управлять пустым пространством между ярлыками.

Вы должны отрегулировать ограничение вертикального расстояния между метками, даже если вы установили значение метки как nil. Это сложный вопрос.

Лучше иметь подход ниже.

  1. Очистить UITableView Seperator цвет

  2. Каждая строка/клетка должна повторное одной клетки прототипа. 1 ячейка для всех.

  3. метод Используйте 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

Добавить ограничение высоты для всех меток, сопротивление на выходе для ограничения следующим образом: enter image description here

затем, если вы получили ноль в ответ от сервера устанавливается ограничение высоты до 0 следующим образом:

nsLcHeightForLabel.constant = 0 
Смежные вопросы