Нужно ли устанавливать heightForRowAtIndexPath, если я использую пользовательский UITableViewCell? - PullRequest
5 голосов
/ 08 июня 2010

Нужно ли устанавливать heightForRowAtIndexPath, если я использую пользовательский UITableViewCell?В моем NIB я уже установил высоту ячейки.

Когда я переопределяю heightForRowAtIndexPath, содержимое моей ячейки не отображается, даже если для него установлена ​​высота, определенная в NIB.

Если я не пересекаю heightForRowAtIndexPath, содержимое ячейки отображается, но имеется переполнение, поскольку высота по умолчанию недостаточно велика.

1 Ответ

12 голосов
/ 08 июня 2010

Если все ваши строки имеют одинаковую высоту, вы можете установить свойство rowHeight вашего UITableView вместо реализации tableView:heightForRowAtIndexPath:. Если у вас есть строки разной высоты, вы должны реализовать tableView:heightForRowAtIndexPath:.

Ни один из этих методов не будет автоматически возвращать высоту ячейки, которую вы определили в NIB, поскольку они вызываются до того, как вы начнете создавать ячейки в tableView:cellForRowAtIndexPath:.

Чтобы использовать высоту ячейки, определенной в вашей NIB, я рекомендую вам определить пользовательское свойство вашего контроллера с именем prototypeCell, которое будет содержать одну ячейку, которая никогда не будет отображаться на вашей таблице. В tableView:heightForRowAtIndexPath: проверьте, равен ли prototypeCell нулю. Если это так, инициализируйте его из своего NIB. Затем верните prototypeCell.frame.size.height.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...