Когда я использовал метод layoutSubviews UItableViewcell с категорией в моем файле, что-то пропало - PullRequest
1 голос
/ 30 июня 2011

когда я использовал метод layoutSubviews UItableViewcell с категорией, как в коде ниже

@implementation UITableViewCell (forimage)

- (void)layoutSubviews{
    [super layoutSubviews];
    self.imageView.frame = CGRectMake(0, 0, 50, 50);
}

@end

когда я использовал приведенный ниже код для рисования ячеек, textLabel исчез, все знают, почему это так ~, и означает ли это, что если я использую layoutSubviews, я должен написать все подпредставления, которые я нужен метод?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    RadioInfo *radioinfo = [radios objectAtIndex:indexPath.row];
    cell.textLabel.text = [NSString stringWithFormat:@"%@",radioinfo._name];

    if(!radioinfo._logo){
        if(self.tableView.dragging == NO && self.tableView.decelerating == NO){
            [self startPicDownload:radioinfo forIndexPath:indexPath];
        }

        cell.imageView.image = [UIImage imageNamed:@"1.jpg"];
    }
    else {
        cell.imageView.image = radioinfo._logo;
    }

    return cell;
}

1 Ответ

6 голосов
/ 30 июня 2011

То, что вы хотите сделать, это добавить в поведение метода layoutSubviews UITableViewCell, а не заменить его.

Чтобы правильно добавить к поведению, создайте подкласс ячейки и создайте свой собственный макет, как описано выше, но добавьте [super layoutSubviews] прямо в верхней части вашего метода, чтобы обеспечить выполнение собственного базового макета ячейки.первый.

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