2010-01-10 2 views
0

У меня эта странная проблема при работе с iPhone SDK 3.1.2.Странная проблема с UITableViewCell: UILabel превращается во что-то еще?

Мои UITableViewCell содержит 3 UILabel, каждый из которых присваивается числовой тег от 1 до 3.

http://img.skitch.com/20100109-gdg9f57999gne3psqmmb3y4nb1.png

Проблема с первым UILabel (выделено на скриншоте выше): Я не могу установить текст на что угодно. Даже NSLog его содержимое дает мне (null).

Что интересно, когда я попытался напечатать имя класса UILabel, вместо этого я получил UITableViewCell.

http://img.skitch.com/20100110-7jfgipbiskbc9xm68pt3mqfqi.png

Изменения тега этого конкретного UILabel к другому числу (например, 4) делает ее работать должным образом. Как странно.

У кого-нибудь есть идеи?

+1

Вы нажали на элемент 'UITableViewCell' в Interface Builder, чтобы проверить, какое значение этого тега используется? –

+0

О, он установлен в 1. Изменение его на 0, однако, не решает проблему. –

+0

Так как UITableViewCell автоматически имеет некоторые подвид для аксессуаров и прочее, возможно, один из них уже использует один и тот же тег или что-то еще? – Nimrod

ответ

1

Поскольку вы создаете ячейку в Interface Builder, я бы не стал использовать тег. Я бы просто подклассифицировал UITableViewCell как MyCell или что-то еще, изменил класс вашей ячейки таблицы на MyCell, а затем объявил некоторые IBOutlets в MyCell, к которым вы можете подключить subviews. Это также позволяет вам определять некоторые удобные методы/свойства для ячейки.

Тогда вы можете забыть теги и просто сделать myCellInstance.nameLabel.text = @ "Joebob Briggs" или что-то еще.

+0

Нет необходимости в подклассе. @gcamp верен, вы можете найти метки в 'cell.contentView'. –

+0

Ну, это может быть не нужно, но для меня тег больше похож на последнее средство, потому что теперь вам нужно вручную синхронизировать некоторые константы. Если вы используете номер тега, по крайней мере, добавьте кое-что, например «#define kNameLabelTag 1», чтобы помочь синхронизировать ситуацию. К сожалению, IB не позволит вам вводить те, которые определяют для тега, но будет автоматически синхронизировать IBOutlets. – Nimrod

4

Вы не должны смотреть в cell.contentView. :)