Как получить объект ячейки в tableView: (UITableView *) tableView heightForRowAtIndexPath функция? - PullRequest
18 голосов
/ 12 апреля 2011

Я хочу знать содержимое ячейки при возврате heightForRowAtIndexPath.В этой функции, как мне получить объект ячейки?

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

}

Если я попробую это

 [tableView cellForRowAtIndexPath:indexPath]

, то оно завершится неудачно и отключится бесконечным циклом.идея?

Ответы [ 5 ]

26 голосов
/ 12 апреля 2011

Вызовите себя (делегат), а не сам tableView.

id cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
2 голосов
/ 14 мая 2015

Использование : func dequeueReusableCellWithIdentifier(identifier: String) -> AnyObject? из UITableView.
Не использовать : func dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath) -> AnyObject
Возможная причина : heightForRowAtIndexPath вызывается до cellForRowAtIndexPath, и этот метод использует путь индекса для выполнения дополнительной настройки на основе положения ячейки в табличном представлении. Но поскольку ячейки еще нет, я думаю, что она идет в бесконечный цикл.

1 голос
/ 08 февраля 2012

Ячейка не была создана при вызове heightForRowAtIndexPath:, поэтому нет способа "получить" ячейку. Вместо этого посмотрите на свою модель и определите высоту ячейки таким образом.

Если вы беспокоитесь о длинных строках и вам нужно больше вертикального пространства в вашей ячейке, рассмотрите возможность использования sizeWithFont:forWidth:lineBreakMode: Документы здесь: https://developer.apple.com/library/ios/#documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html

0 голосов
/ 12 апреля 2011
uitableviewcell *ce=[self.view viewwithtag:indexPath.row]; 

возвращает объект ячейки.

0 голосов
/ 12 апреля 2011

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

Таким образом, вам нужно написать некоторый код для перехода от indexPath к нужным данным в вашей модели данных.

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