2013-11-17 3 views
2

Я сделал пользовательский класс от UITableViewCell как MealItemDetailCell.iPhone: Как получить размер элемента в xib?

В своем xib я перетащил UITableViewCell, а затем добавил элементы в ячейку. При заполнении таблицы, которая отображает MealItemDetailCells, днища ячеек полностью отрезаны, так как они больше, чем высота по умолчанию в таблице.

Я вижу, где я могу использовать heightForRowAtIndexPath и установить его на что-то достаточно большое, но я мог бы отредактировать элементы в пользовательской ячейке, а затем эта высота может оказаться неприемлемой. Есть ли способ программно получить высоту TableViewCell из файла xib?

В контроллере, когда я предоставляю ячейку для заполнения таблицы, я попробовал cell.frame.size.height, но это, казалось, возвращало высоту ячейки по умолчанию 45. cell.window.size.height дал мне все окно iPhone.

My current xib cell 110 high, видно из Инспектора размеров при нажатии на TableViewCell при просмотре MealItemDetailCell.xib.

Я ожидал бы, что некоторый атрибут будет читабельным, чтобы я мог его получить.

Я искал какое-то время, но я не мог найти ничего близкого. Любые мысли или рекомендации? Благодарю.

Обновление (ответ Генри Хун ниже): Я вижу разные значения в Инспекторе размеров. В разделе «Table View Cell» (вверху) есть значение «высота строки». Затем в разделе «Вид» есть значение в «Высота» (в разделе «Показывать прямоугольный прямоугольник»). «Высота строки» не изменяется при перетаскивании границы ячейки таблицы xib до тех пор, пока я не сниму и не проверит флажок «custom». Хотя, просто повторю попытку, я вижу, что оба соответствуют фактическому размеру ячейки при завершении перетаскивания! И теперь, но не раньше, используя увеличиваемое значение стрелки вверх/вниз, я вижу, что контур ячейки перемещается так, как ожидалось. Но «высота строки» по-прежнему остается неизменной. Я уверен, что это где-то документально, но я думаю, мне просто нужно получить номер «высота строки», соответствующий фактической/окончательной отредактированной высоте ячейки xib.

ответ

0

cell.frame.size.height должен иметь возможность извлекать высоту представления из файла nib.

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

или он вернет высоту по умолчанию.

+0

Ответил (выбежал из комнаты здесь). – gkd720

1

В интерфейсе строитель щелкни на Tableview, а затем в разделе линейки установить высоту ячейку до 110 в противном случае вы получите стандартную высоту, которая 44.

Надеется, что это помогает! Приветствия

+0

Ну, у меня нет xix для просмотра таблицы. Я просто программирую программу tableviewcontroller. Поэтому я не уверен, что это применимо. – gkd720

0

Я думаю, вы можете решить вашу проблему реализации метода UITableViewDelegate Tableview: HeightForRowAtIndexPath: и вернуть высоту для ячейки, в вашем случае, 110.

Приветствия, Alessandro

+1

Но это предполагает, что я знаю высоту ячейки. Я хотел бы иметь возможность графически редактировать ячейку в ее xib и делать с ней. Я не хочу визуально получать размер из окна «Размер инспектор», а затем вводить его в возвращаемое значение для HeightForRowAtIndexPath. Вот почему я подробно рассказал о своих боксах и знаках выше. – gkd720

0

Наиболее предоставленных ответов охватывают ваш вопрос. Насколько я вижу, «Высота строки» в построителе интерфейсов - это просто удобное значение, так как редактирование высоты напрямую по номеру не допускается - только путем перетаскивания.

Интерфейс строитель записывает это значение в структуре данных XIB как «RowHeight»:

<tableViewCell contentMode="scaleToFill" selectionStyle="blue" indentationWidth="10" shouldIndentWhileEditing="NO" rowHeight="65" id="3" customClass="PaperInfoCell"> 

Однако, несмотря на разборе НСБ себя, это, кажется, не быть написаны на любом свойстве экземпляра - следовательно, ваше единственное решение, которое удаляет двойную бухгалтерию, - это создать экземпляр наконечника и получить высоту строки из фрейма ячейки.

В качестве побочного примечания, все это меньше связано с использованием iOS8, автоматической компоновки и UITableViewAutomaticDimension.

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