iphone SDK - странная ошибка с ячейкой TableView - PullRequest
1 голос
/ 22 февраля 2010

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

Примечание: я хочу, чтобы TextView был во всех, кроме первой строки в моей таблице.

Проблема в том, что, когда я реализую оператор if для проверки indexpath.row, а затем прокручиваю текстовое представление, в некоторых ячейках НЕ видно. Это как-то связано с тем, что у меня клетки с довольно большой высотой> 200, и они изначально за кадром. Когда я прокручиваю вниз, это похоже на то, что следующая ячейка под самой нижней видимой ячейкой теперь отвечает на строку indexpath == 0.

Я совершенно сбит с толку, у кого-нибудь есть идеи?

Мой код

// Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
   CGRect frame; frame.origin.x = 5; frame.origin.y = 10; frame.size.width = 20; frame.size.height = 25; 

           // ..some unrelated setup in here

  //textbox setup
  textView = [[UITextView alloc] initWithFrame:CGRectMake(30, 80, 500, 150)];
  textView.layer.cornerRadius = 10;
  textView.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.2];
  textView.font = [UIFont fontWithName:@"Helvetica" size:17];
  textView.text = @"test-content";
  textView.layer.borderWidth = 1;
  textView.layer.borderColor = [[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:0.9] CGColor];
  textView.tag = 4;

  if (indexPath.row != 0) {
  [cell.contentView addSubview:textView];
  [textView release];  
  }
   }
  // a little more unrelated stuff


return cell;

}

Может кто-нибудь увидеть проблему?

Спасибо

Ответы [ 2 ]

1 голос
/ 22 февраля 2010

Почему вы настраиваете textView, даже если indexPath.row не равен нулю (и вы не освобождаете, если indexPath.row равен нулю)?

Попробуйте переместить создание и настройку внутрь блока "if (indePath.row! = 0)" (чуть выше строки addSubView).

0 голосов
/ 22 февраля 2010

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

if (cell == nil)

Ячейка возвращается и не является nil, но в случае первой ячейки она не имеет текстового представления. Попробуйте изменить идентификатор ячейки для первой ячейки, чтобы увидеть, если у вас есть лучшие результаты; это предотвратит его повторное использование.

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