Хотя ответы на этой странице обсуждают добавление ограничений по высоте или ручной возврат rowHeights, например 44, в heightForRowAtIndexPath, вызывают исчезновение предупреждения, они излишни, поскольку это ошибка в Xcode, видимая по крайней мере в версии 6.3.2. (6Д2105).
Если вы установите точку останова в viewDidLoad, вы увидите, что self.tableView.rowHeight = -1 (UITableViewAutomaticDimension), даже если вы укажете высоту строки 44 в раскадровке. Это связано с тем, что Apple ошибочно предполагает, что вам нужна динамическая высота строки, если вы оставите высоту строки равной 44, потому что они не предоставили вам флаг для указания ваших предпочтений.
Вот некоторые возможные решения и их результаты:
Установите высоту строки на 43 или 45 в раскадровке (работает).
Вручную верните высоту 44 в heightForRowAtIndexPath (работает).
Добавьте ограничения по высоте между элементами UITableViewCell и его contentView (работает).
К сожалению, эти решения либо требуют от вас изменения дизайна, добавления ненужных ограничений или добавления ненужного кода для обхода ошибки. Я попробовал (что я думал) самое простое решение:
- Установите высоту каждого UITableViewCell на 44 (Пользовательский) в раскадровке (сбой).
Я действительно хотел получить чистое решение для раскадровки, поэтому, наконец, я попробовал:
- Добавьте определяемый пользователем атрибут времени выполнения в UITableView в раскадровке и назовите UITableView с примечанием о том, как устанавливается его rowHeight, чтобы будущие разработчики могли его найти: (работает):
![введите здесь описание изображения](https://i.stack.imgur.com/fRfSi.png)
![введите здесь описание изображения](https://i.stack.imgur.com/QDQnm.png)
Эти ошибки слишком распространены в iOS-разработке и заставляют разработчиков тратить слишком много времени на взвешивание последствий того, как их решения повлияют на ремонтопригодность в долгосрочной перспективе.
Поскольку найти концептуально правильное решение, которое можно обслуживать и которое не кажется запутанным, так неуловимо, и предположить, что Apple исправит ошибку и что 44 будет высотой строки по умолчанию в обозримом будущем, тогда ограничение или определяемое пользователем Решения атрибутов времени выполнения, вероятно, наиболее удобны в сопровождении.
person
Zack Morris
schedule
22.06.2015