2011-09-04 4 views
2

После загрузки таблицы с пользовательскими ячейками все выглядит нормально и прокрутка вниз прекрасна. Когда я просматриваю вышеперечисленные ячейки, появляется пустое. Они на самом деле полностью функциональны, поскольку их все еще можно выбрать, а затем они отправляются на страницы подробностей. Код cellForRowAtIndexPath выполняется для возвращаемой строки и возвращает ячейку, как я ожидал бы с нужными деталями. Он просто не отображается. Любые мысли/помощь будут оценены.При прокрутке таблицы снова ячейки отображаются пустым?

Код, приведенный ниже, является тем, что я использовал.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 


    static NSString *CustomCellIdentifier = @"CustomCellIdentifier"; 

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier]; 
    if (cell == nil) { 

     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; 
     for (id oneObject in nib) { 
      if ([oneObject isKindOfClass:[CustomCell class]]) { 
       cell = (CustomCell *)oneObject; 
      } 
     } 
    } 

    // Configure the cell. 


    Book *aBook = [appDelegate.sortedArray objectAtIndex:indexPath.row]; 


    //name 
    NSString *trimmedString = [aBook.Name stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
    cell.nameLabel.text = trimmedString; 
    //catagory 
    NSString *trimmedExperience = [aBook.PrimaryExperience stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    if ([trimmedExperience isEqualToString:@"1"]) { 
     cell.catagoryLabel.text = @"None"; 
    } 
    else if([trimmedExperience isEqualToString:@"2"]){ 
     cell.catagoryLabel.text = @"Limited"; 
    } 
    else if ([trimmedExperience isEqualToString:@"4"]) { 
     cell.catagoryLabel.text = @"Full"; 

    } 
    else { 
     cell.catagoryLabel.text = @""; 

    } 




    cell.distanceLabel.text = [NSString stringWithFormat:@"%1.1f",aBook.distance]; 


    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 


    return cell; 
} 
+0

Как именно вы визуализируете ячейки? Вы используете интерфейс Builder или с нуля? – medopal

+0

Ячейки отображаются из интерфейса Builder, и текст установлен в cellForRowAtIndexPath - странно, что они работают красиво, пока они не прокрутят верх. – Davida

+1

Можете ли вы показать метод cellForRowAtIndexPath? – jrturton

ответ

1

Проблема связана с файлом xib и его загрузкой. Чтобы вырезать проблему и получить полный контроль, для версии IB пользовательской ячейки был заменен следующий код.

static NSString *CellTableIdentifier = @"CellTableIdentifier"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellTableIdentifier] autorelease]; 
    CGRect nameLabelRect = CGRectMake(15, 5, 200, 15); 
    UILabel *nameLabel = [[UILabel alloc] initWithFrame:nameLabelRect]; 
    nameLabel.textAlignment = UITextAlignmentLeft; 
    nameLabel.font = [UIFont boldSystemFontOfSize:14]; 
    nameLabel.tag = kNameTag; 
    [cell.contentView addSubview:nameLabel]; 
    [nameLabel release]; 

    CGRect catagoryLabelRect = CGRectMake(15, 26, 100, 15); 
    UILabel *catagoryLabel = [[UILabel alloc]initWithFrame:catagoryLabelRect]; 
    catagoryLabel.textAlignment = UITextAlignmentLeft; 
    catagoryLabel.font = [UIFont systemFontOfSize:12]; 
    catagoryLabel.tag = kExperienceTag; 
    [cell.contentView addSubview:catagoryLabel]; 
    [catagoryLabel release]; 

    CGRect distanceLabelRect = CGRectMake(210, 26, 70, 15); 
    UILabel *distanceLabel = [[UILabel alloc] initWithFrame:distanceLabelRect]; 
    distanceLabel.textAlignment = UITextAlignmentRight; 
    distanceLabel.font = [UIFont boldSystemFontOfSize:12]; 
    distanceLabel.tag = kDistanceTag; 
    [cell.contentView addSubview:distanceLabel]; 
    [distanceLabel release]; 
} 

Спасибо, что помогли подумать об этом. Теперь прокрутка работает отлично.

+0

Рад, что у вас это работает ... интересно ПОЧЕМУ xib не работает? – jrturton

Смежные вопросы