Подтвердить что ты не робот

Как получить объект ячейки в tableView: (UITableView *) tableView heightForRowAtIndexPath функция?

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

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

}

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

 [tableView cellForRowAtIndexPath:indexPath]

он терпит неудачу и отключается в бесконечном цикле.

Любая идея?

4b9b3361

Ответ 1

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

id cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

uitableviewcell *ce=[self.view viewwithtag:indexPath.row]; 

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