GIF-изображение не отображается при прокрутке таблицы назад? - PullRequest
0 голосов
/ 29 октября 2018

Я нашел очень странную вещь.

1. Я сохраняю представление в моем ViewController. enter image description here

  1. добавить это представление в TableView.

`

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 100;
}

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

    cell.textLabel.text = [NSString stringWithFormat:@"%ld",indexPath.row];
    if(indexPath.row == 0)
    {
        [cell.contentView addSubview:self.imageContainer];
    }else
    {
        if(self.imageContainer.superview == cell.contentView)
        {
            [self.imageContainer removeFromSuperview];
        }
    }
    return cell;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row == 0)
    {
        return 200;
    }
    else
    {
        return 44;
    }
}

при прокрутке вниз и прокрутке вверх вверх изображение не отображается. Почему? you can see this picture

1 Ответ

0 голосов
/ 29 октября 2018

Просто измените однострочный код следующим образом, и ваша проблема решена:

от

if (nil == _imageContainer)

до

if (nil == _imageContainer || _imageContainer.superview == nil)

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

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

cell.textLabel.text = [NSString stringWithFormat:@"%ld",indexPath.row];
if(indexPath.row == 0)
{

    [cell.contentView addSubview:self.imageContainer];

UIImageView * imageView = (UIImageView *) _imageContainer.subviews [0]; imageView.highlighted = YES;

}else
{
    if(self.imageContainer.superview == cell.contentView)
    {

         [self.imageContainer removeFromSuperview];
    }
}
return cell;

} * * тысяча двадцать-один

...