2009-09-01 3 views

ответ

4

Используемый вариант зависит от того, как вы создали ячейку в первую очередь. Если вы добавили свой UILabel в качестве подзаголовка contentView (например, [cell.contentView addSubview:myLabel]), вы должны использовать [cell.contentView viewWithTag:1] для его получения (при условии, что у метки на самом деле есть метка 1).

Однако, я бы предупредил вас об использовании -viewWithTag: в первую очередь. Это довольно полезно для того, чтобы тыкать на вещи, но это не очень надежно (потому что, если у двух представлений есть один и тот же тег, вы только получите один из них), и он не очень эффективен (он должен проходить через subviews каждый раз, когда вы используй это). Вместо этого я рекомендую создать подкласс UITableViewCell, который имеет свойства для ваших пользовательских представлений, поэтому вы можете получить к ним доступ напрямую.

+1

+1 Рекомендация для подсмотров как ivars – Tim

+0

Благодарим вас за быстрый ответ. Я хотел бы больше узнать о вашем альтернативном предложении. Не могли бы вы дать мне больше намеков на это? Как небольшой образец кода будет очень полезен для меня прямо сейчас. благодаря! – RoundOutTooSoon

+0

Вы использовали ивары с другими вещами, не так ли? Просто создайте подкласс UITableViewCell и добавьте к нему свои ivars. Я также рекомендовал бы, чтобы этот подкласс настраивал свои дочерние объекты в своем методе -initWithStyle: reuseIdentifier :. Вы также должны объявить @properties для этих ivars, чтобы ваш контроллер мог получить к ним доступ. При создании вашей ячейки в -tableView: cellForRowAtIndexPath: вы можете просто вызвать вызов [tableView dequeueReusableCellWithIdentifier: @ "foo"] (YourCellSubclass *). –

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