Проблема с просмотром таблицы в iPhone при добавлении к ней изображения - PullRequest
0 голосов
/ 02 декабря 2010

у меня есть следующий код для создания ячейки и добавления к ней изображения

UIImageView* MyImage =[[UIImageView alloc]initWithFrame:CGRectMake(100,10,40,40)];  
[MyImage setImage:[UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]]];  
[MyImage setBackgroundColor:[UIColor clearColor]];  
[cell addSubview:MyImage];  
[MyImage release];  

cell.textLabel.text=[dataArray objectAtIndex:indexPath.row];  
     return cell;

Я использую эту таблицу для многих целей и поэтому обновляю ее снова и снова .... Поэтому следующий возраст перекрывает последний, из-за которого возникает проблема, и оба эти изображения видны (я использую прозрачный фон для каждого изображения) .... другая проблема возникает, когда мне не нужно изображение .. здесь я не могу удалить последнее изображение ...

пожалуйста, помогите

Ответы [ 2 ]

3 голосов
/ 02 декабря 2010

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

Хорошо, вот решение:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell==nil)
{
   cell = [[UITableViewCell alloc] initWithStyle:UITableViewStyleDefault reuseIdentifier:cellIdentifier];

   UIImageView* MyImage =[[UIImageView alloc]initWithFrame:CGRectMake(100,10,40,40)]; 
   MyImage.tag = 1000; 

   [MyImage setBackgroundColor:[UIColor clearColor]];  
   [cell addSubview:MyImage];  
   [MyImage release]; 
}
UIImageView *imgView = (UIImageView*)[cell viewWithTag:1000];
imgView.image = nil;
imgView.image = [UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]];
0 голосов
/ 02 декабря 2010

Где вы используете

UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: @ "MyIdentifier"];if (cell == nil) {cell = [[[UITableViewCell alloc] initWithFrame: CGRectZero reuseIdentifier: @ "MyIdentifier"] autorelease];}

Измените это на UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: @ "MyIdentifier"];cell = [[[UITableViewCell alloc] initWithFrame: CGRectZero reuseIdentifier: @ "MyIdentifier"] autorelease];

Это решение, которое всегда добавляет новый кадр к старой существующей ячейке.1009 *

Удалите цвет фона для некоторого цвета из чистого цвета и каждый раз добавляйте на изображение либо изображение по умолчанию, либо конкретное изображение. Имя для метки, если вы не хотите добавлять какой-либо текст в метку, а также добавляйте text = @ "";

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