2017-02-14 6 views
-4

У моего приложения есть десятки табличных экранов, все они работают нормально, за исключением одной относительно длинной таблицы, что если я добавлю ячейку в качестве последней ячейки, она будет дублироваться с этим перекрытием.Зачем ячейки перекрывают друг друга в UITableView?

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

Я использую этот общий способ вызвать ячейку по имени

let cell = tableView.dequeueReusableCellWithIdentifier(cellName, forIndexPath: indexPath) 

после всех освежает, вы можете увидеть один «reportPlace» идентификатор, почему все эти дубликаты.

items = [["similarPlace", "similarPlace", "similarPlace", "reportPlace"]] 

-

disaster

Отказ от ответственности: Я проверил все упомянутые решения подобных проблем

+0

let cell = tableView.dequeueReusableCellWithIdentifier («Songcell», forIndexPath: indexPath) –

+0

Можете ли вы оба кода вашего контроллера? –

+0

Проверьте высоту ячейки в соответствии с последней ячейкой, если вы выбрали пользовательский вид, тогда –

ответ

2

Решение: определить высоту только один раз.

Я устанавливал высоту несколько раз клеток, которые он вызывает эту проблему:

self.tableView?.rowHeight = 60.0 
self.tableView?.rowHeight = 100.0 

Я думал, что это будет принимать последний, но, похоже, каждый из них делает экземпляр ячейки ,

также не перезаряжайте стол больше, чем необходимо. и не изменять исходные данные в cellForRowAtIndexPath метод.

+1

i set 'tableview.оценилRowHeight' в моем методе tableview-prepare-method, который заставил меня бороться с этой проблемой. – Sandu

1

У меня была такая же проблема, и не мог почему бы actly это происходит (позиция у была установлена ​​неправильно), но я сделал небольшой «взломать», что решить эту проблему для меня

Если вы создаете ячейку программно просто сделать это в init в классе клеток:

override init(frame: CGRect) { 
    let noProblemFrame = CGRect(x: 0, y: 0, width: frame.width, height: frame.height) 
    super.init(frame: noProblemFrame) 
} 

иначе сделать то же самое в awakeFromNib

override func awakeFromNib() { 
    let noProblemFrame = CGRect(x: 0, y: 0, width: frame.width, height: frame.height) 
    frame = noProblemFrame 
+1

спасибо, я не пробовал это, чтобы быть честным, то, что решило это для меня, - это ответ, который я добавил. – DeyaEldeen

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