Настроенный UITableViewCell исчезает - PullRequest
2 голосов
/ 12 января 2010

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

Моя проблема в том, что у меня настроенный UITableViewCell, нестандартный размер, изображение и контент. Когда я прокручиваю вверх или вниз, а затем снова назад, текст в некоторых ячейках исчезает. Кажется, это происходит случайно.

Я читал про "dequeue", но я либо ошибся, либо не попал в мой случай ...

В любом случае, вот код для моих ячеек:

- (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];
}

cell.selectionStyle = UITableViewCellSelectionStyleNone;


cell.imageView.image = [[UIImage alloc] initWithContentsOfFile:
                        [[NSBundle mainBundle]  pathForResource:
                         [[shopItems  objectAtIndex:indexPath.row] name] ofType:@"jpg"]];

UITextField *temp= [[UITextField alloc] initWithFrame:cell.frame];
temp.text = [[shopItems objectAtIndex:indexPath.row] name];
temp.textColor = [UIColor whiteColor];
temp.textAlignment = UITextAlignmentCenter; 


UIImageView *cellView = [[UIImageView alloc] initWithImage:[[UIImage alloc] initWithContentsOfFile:
                                                                   [[NSBundle mainBundle] pathForResource:@"smalltabs_wide_bg"  ofType:@"png"]]];

[cellView addSubview:temp];

cell.backgroundView = cellView;



return cell;
}

Есть ли у вас (!) Идеи по этому поводу?

Ответы [ 4 ]

2 голосов
/ 12 января 2010

Возможная проблема заключается в том, что вы добавляете UITextField и UIImageView в свою ячейку каждый раз, когда вы (повторно) используете ячейку. Ваш код должен выглядеть как

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

   // Insert all subviews to cell here
   }

   // setup cell's subviews here
   ...
   }

А также учитывайте все утечки памяти в вашем коде - когда вы создаете что-то с помощью alloc, вы должны выпустить его куда-нибудь.

1 голос
/ 12 января 2010

использовать метод reusableCell

читать эту дискуссию

http://discussions.apple.com/thread.jspa?threadID=2075838&tstart=1035

0 голосов
/ 29 января 2012

делюсь своим опытом:

Были похожие проблемы. У меня в приложении много таблиц, и в одной из них данные случайно исчезают, и в итоге вся таблица исчезает.

Проблема для меня заключалась в том, что я снимал с ячеек ячейки, дав им всем один и тот же «уникальный» идентификатор. Поэтому несколько таблиц имели один и тот же идентификатор, и я полагаю, что они конфликтуют и портят ячейки, на которые я смотрел.

Предоставление каждой таблице собственного уникального идентификатора решило проблему для меня. (Д!)

(опубликованное здесь также может быть дубликатом: Изображения пользовательских ячеек UITableView исчезают после прокрутки. )

0 голосов
/ 12 января 2010

Одной из проблем является то, что вы не выпускаете временный UITextField, это приведет к утечке памяти и может вызвать проблемы.

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