Хоча відповіді на цій сторінці, що обговорюють додавання обмежень по висоті або повернення вручну рядкових висот, рівних 44 у висотуForRowAtIndexPath, викликають попередження про відхід, вони є зайвими, оскільки це помилка в Xcode, видно щонайменше у версії 6.3.2 (6D2105).
Якщо встановити в viewDidLoad точку розриву, ви побачите, що self.tableView.rowHeight = -1 (UITableViewAutomaticDimension), навіть якщо ви вказали висоту рядка 44 у дошці повідомлень. Це тому, що Apple неправильно припускає, що ви бажаєте динамічної висоти рядків, якщо залишити висоту рядка в 44, оскільки вони не надали вам прапор для вказівки ваших уподобань.
Ось кілька можливих рішень та їх результати:
Встановіть висоту рядка на 43 або 45 у рекламній дошці (працює).
Вручну поверніть висоту 44 у висотуForRowAtIndexPath (працює).
Додайте обмеження по висоті між елементами UITableViewCell та його contentView (працює).
На жаль, ці рішення або вимагають від вас змінити дизайн, додати зайві обмеження або додати непотрібний код, щоб обійти помилку. Я спробував (що я вважав) найпростішим рішенням:
- Встановіть висоту кожного UITableViewCell на 44 (Користувацьке) на дошці повідомлень (не вдається).
Мені дуже хотілося вирішити це питання, тому нарешті я спробував:
- Додайте визначений користувачем атрибут UITableView, визначений користувачем, на дошці повідомлень і назвіть UITableView із зазначенням про те, як встановлюється його rowHeight, щоб майбутні розробники могли його знайти: (працює):

Ці помилки занадто поширені в розробці iOS і змушують розробників витрачати зайвий час, зважуючи наслідки того, як їх рішення впливатимуть на ремонтоздатність у довгостроковій перспективі.
Оскільки пошук концептуально правильного рішення, яке є досяжним і не здається заплутаним, є настільки невловимим, і якщо припустити, що Apple виправить помилку і що 44 буде висотою рядка за замовчуванням в осяжному майбутньому, то обмеження або визначено користувачем Рішення атрибутів виконання, мабуть, є найбільш ретельними.