2013-08-31 3 views
0

Я использую пользовательскую табличную ячейку, метки и изображения связаны с тегами.setAccessoryType уничтожает TableViewCell

Если я добавить

[клеток setAccessoryType: UITableViewCellAccessoryDisclosureIndicator]

это разрушает мою TableView. изображение уничтожает и фоновый цвет.

здесь различия:

enter image description hereenter image description here

Кто-нибудь есть идеи, где может быть проблема? Благодаря

EDIT:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"TableCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 

     if ([self labelCellNib]) { 
      [[self labelCellNib] instantiateWithOwner:self options:nil]; 
     } else { 
      [[NSBundle mainBundle] loadNibNamed:@"LabelCell" owner:self options:nil]; 
     } 

     cell = self.labelCell; 
     self.labelCell = nil; 
    } 

    static NSDateFormatter *dateFormatter = nil; 
    if (dateFormatter == nil) 
     dateFormatter = [[NSDateFormatter alloc] init]; 

    static NSCalendar *calendar; 
    if(calendar == nil) 
     calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 

    NSString * timeStampString = [sqlTime objectAtIndex:indexPath.row]; 
    NSTimeInterval _interval=[timeStampString doubleValue]; 
    NSDate *createdAt = [NSDate dateWithTimeIntervalSince1970:_interval]; 
    [dateFormatter setDateStyle:NSDateFormatterLongStyle]; 

    // Datum in die Tabellen-Zelle einfügen 
    UILabel *label4 = (UILabel *)[cell viewWithTag:LABEL4]; 
    label4.text = [NSString stringWithFormat:@"%@", [dateFormatter stringFromDate:createdAt]]; 

    // Configure the cell... 
    UILabel *label1 = (UILabel *)[cell viewWithTag:LABEL1]; 
    label1.text = [NSString stringWithFormat:@"%@ %@", [sqlData objectAtIndex:indexPath.row], sonderzeichen]; 

    UILabel *label2 = (UILabel *)[cell viewWithTag:LABEL2]; 
    label2.text = [NSString stringWithFormat:@"Preis pro %@: %@ €", sonderzeichen, [sqlPreis objectAtIndex:indexPath.row]]; 

    UILabel *label3 = (UILabel *)[cell viewWithTag:LABEL3]; 
    UIImageView *image = (UIImageView *)[cell viewWithTag:IMAGE_TAG]; 

    if (indexPath.row==[itemsArray count]-1) { 
     image.image = [UIImage imageNamed:@"default.png"]; 
     label3.text = @"-"; 
    } else if ([itemsArray count]>1) { 
     int data_old = [[NSString stringWithFormat:@"%@", [sqlData objectAtIndex:indexPath.row]] intValue]; 
     int data_new = [[NSString stringWithFormat:@"%@", [sqlData objectAtIndex:indexPath.row+1]] intValue]; 
     label3.text = [NSString stringWithFormat:@"%i", data_old-data_new]; 

     NSLog(@"%d -- %d", data_old, data_new); 
     if (data_new>data_old) { 
      image.image = [UIImage imageNamed:@"pfeil_runter.png"]; 
     } else if (data_new<data_old) { 
      image.image = [UIImage imageNamed:@"pfeil_hoch.png"]; 
     } else { 
      image.image = [UIImage imageNamed:@"minus.png"]; 
     } 
    } 

    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; 

    cell.contentView.backgroundColor = indexPath.row % 2? [UIColor colorWithRed:228.0/255.0 green:244.0/255.0 blue:199.0/255.0 alpha:1]:[UIColor whiteColor]; 
    return cell; 
} 
+1

Как вы добавляете метки и изображения в свои ячейки? Пожалуйста, напишите cellForRowAtIndexPath. – Joel

+0

Я отредактировал мое сообщение – Loko

+0

Вы должны переместить весь динамический контент с cellForRowAtIndexPath на willDisplayCell. – Joel

ответ

2

Вы должны установить цвет фона ячейки, а не contentView, но это не работает в cellForRowAtIndexPath. Она должна быть в willDisplayCell: forRowAtIndexPath:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    cell.backgroundColor = indexPath.row % 2? [UIColor colorWithRed:228.0/255.0 green:244.0/255.0 blue:199.0/255.0 alpha:1]:[UIColor whiteColor]; 
} 

Насколько изображения получение сжато, что имеет отношение к размеру вашего подвидов и их ограничений. Я думаю, вы можете исправить это, указав ограничения ширины на два из ваших ярлыков (пара и под друг друга), но сделайте свой приоритет < 1000, поэтому, когда добавится аксессуар, ширина этих меток будет меньше. Также дайте изображению слева фиксированную ширину.

+0

Хорошо, это с изображениями! но цвет фона не работает с кодом willDisplayCell – Loko

+0

@Loko, вы изменили его на cell.backgroundColor not cell.contentView.backgroundColor? Я тестировал это, и он отлично работал для меня. – rdelmar

+0

@ Loko, Извините, у меня была ошибка разреза и вставки - я исправил ее. – rdelmar

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