Авторозкладка ігнорується у користувацькому UITableViewCell


93

Незважаючи на те, що встановили обмеження для всіх елементів, включаючи вертикальні, необхідні для того, щоб комірка обчислила свою висоту, авторозкладка, схоже, ігнорується: усі комірки стискаються.

Ось знімок екрана результату та обмежень у розкадруванні. введіть тут опис зображення

введіть тут опис зображення

У VC, який містить tableView, ось код у viewDidLoad:

tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension

Коментування другого рядка дає клітинки висотою 120,0, але авторозклад також ігнорується.

Дякую


Оновлення

Щоб спростити інтерфейс, я залишив одну мітку з обмеженнями:

  • Провідний простір для супервигляду
  • Найкраще місце для суперперегляду
  • Фіксована ширина та висота (100 і 100)
  • Нижній простір до поля контейнера, щоб переконатися, що комірка має всі вертикальні обмеження для визначення її висоти

І завдяки цьому спрощеному інтерфейсу, автоматичне розміщення все ще не враховується, що натякає мені, що проблема виникла не через погано встановлені обмеження.

В Інспекторі розмірів для висоти рядка встановлено значення 120 та встановлено прапорець. Клітинка має правильний спеціальний клас, ідентифікатор повторного використання комірки правильний.


Оновлення: рішення знайдено

Це була проста помилка, див. Мою відповідь нижче.


Перевірте термінал для налагодження - чи є там журнали NSLayoutConstraint, що свідчать про те, що щось не працює належним чином?
Matthew Hallatt

У терміналі для налагодження нічого не відображається @MatthewHallatt, дякую.
Kqtr

@Kqtr спробуйте прокоментувати ці два рядки, а потім один раз запустити його, щоб перевірити, чи є якісь зміни?
Тушар Шарма

@TusharSharma Коментування двох рядків має той самий ефект, що і коментування рядка rowHeight: клітинка має висоту 120,0, але автоматичне розміщення не працює.
Kqtr

1
Чи показує конструктор інтерфейсів якісь обмеження як відсутні або неоднозначні? Перевірте маленький жовтий або червоний знак оклику.
Matthew Hallatt

Відповіді:


250

Автоматичне розміщення було проігноровано, оскільки як прототипу комірки, так і UIView комірки було надано спеціальний клас комірки в IB.

Повернення UIView до класу UIView вирішило проблему.

просто щоб бути über чітким


2
Я застряг у цій проблемі годинами, і це вирішує її, дякую!
candidev

я витратив майже цілий день, поки не прийшов сюди .... Тисяча завдяки вам.
Renascent

-3

Я думаю, проблема в тому, що ви впроваджуєте:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: 
IndexPath) -> CGFloat {

 return x
}

Вам потрібно видалити цю функцію для того, щоб переглянути таблицю, щоб розрахувати її автоматичну висоту для комірок.


Дякую, я, на жаль, не переоцінюю це: я насправді навіть не маю представника для цього tableView, лише джерело даних.
Kqtr

Ви встановили обмеження для текстового перегляду для всіх для країв комірки? І ви відключили прокрутку textView?
Jaafar Barek

Багаторядкова мітка (0 рядків) має обмеження для 1) вертикального інтервалу з номером ліворуч 2) пробілу зверху до перегляду 3) пробілу до суперперегляду та 4) пробілу внизу з міткою Asked By.
Kqtr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.