Подкласс UITableViewCell правильно? - PullRequest
9 голосов
/ 30 июля 2010

В чем разница между добавлением подпредставления к себе и / или представлению содержимого?

Subview добавлен в себя

- (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) {
    UIImage *img = [UIImage imageNamed:@”lol.jpg”]; 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; 
    [self addSubview:imgView];
    [imgView release]; 
    return self;
}

Subview добавлено в contentView

- (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) {
    UIImage *img = [UIImage imageNamed:@”lol.jpg”]; 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; 
    [self.contentView addSubview:imgView];
    [imgView release]; 
    return self;
}

Ответы [ 3 ]

25 голосов
/ 30 июля 2010

Согласно Apple docs :

Представление содержимого объекта UITableViewCell является суперпредставлением по умолчанию для содержимого, отображаемого ячейкой.Если вы хотите настроить ячейки, просто добавив дополнительные представления, вы должны добавить их в представление содержимого, чтобы они располагались надлежащим образом при переходе ячейки в режим редактирования и из него.

Обычно вы добавляете вcontentView, когда вам удобно с изменением размера и позиционированием содержимого, которое обрабатывается настройками автоматического изменения размера, и подкласс UITableViewCell, когда вам нужно некоторое пользовательское поведение и тому подобное.В Руководстве по программированию Apple Table View есть большой раздел, посвященный настройке UITableViewCells .

0 голосов
/ 15 июля 2015

Это потому, что когда ячейка просмотра таблицы переходит в режим редактирования , она добавляет другие элементы управления , такие как кнопка удаления, в ячейку.поэтому ваш контент должен быть изменен, чтобы освободить место для новых элементов управления.Если вы добавите свои подпредставления непосредственно в ячейку табличного представления, эти элементы управления редактированием затенят добавленные вами подпредставления.Ячейка не может регулировать свой размер при входе в режим редактирования (она должна оставаться шириной табличного представления).но объект contentView может и делает.вот почему вы должны добавить свои подпредставления в объект contentView.

0 голосов
/ 18 июня 2015

Вы должны всегда вставлять свой пользовательский вид в ячейку contentView.Убедитесь, что вы не используете

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