2016-01-05 2 views
0

В настоящее время у меня есть UITableView, который скрывает ячейки, которые не находятся в радиусе (slider double). Я делаю это, задавая расстояние, затем устанавливая высоту ячеек, которые соответствуют оператору if, return 0. Однако это вызывает кучу ошибок ограничений, и я не считаю, что это лучший способ сделать это.Лучший способ скрыть ячейку, которая не делает условие (UITableView)

Итак, мой вопрос: есть ли более чистый и элегантный способ добиться того же самого, скрывая результат ячейки?

Текущая высота Функция

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

     if userCurrentLocation != nil { 
      let cellData = cacheData[indexPath.row] 
      //let radius: Double = radiusSliderValue 

      if cellData.distance > radiusData.radiusValue { 
       return 0 
      } 
     } 

ответ

3

Лучше было бы сделать все вычисления расстояния до загрузки TableView, а затем положить только действительные данные в другой массив, что TableView отрабатывает, поэтому вы только представляете строки, которые действительны.

Если данные могут измениться после загрузки TableView и вы не хотите, чтобы перезагрузить всю таблицу, вы можете использовать insertRowsAtIndexPaths:withRowAnimation: и deleteRowsAtIndexPaths:withRowAnimation: на Tableview для добавления новых строк в.

+0

Это гораздо больше смысла, Я попытаюсь разобраться, как это сделать. Haha –

+0

Sweet, спасибо за совет, попытается его реализовать в ближайшее время, приветствует –

Смежные вопросы