设置附件类型会破坏UITableViewCell

时间:2013-08-31 14:46:25

标签: ios cocoa-touch uitableview

我使用自定义表格,标签和图像与标签连接。

如果我添加

  

[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]

它破坏了我的桌面视图。图像破坏和背景颜色。

这里有不同之处:

enter image description here enter image description here

有谁知道问题出在哪里? 感谢

编辑:

- (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 个答案:

答案 0 :(得分: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,因此添加附件视图时,这些标签的宽度会变小。同时在左侧给出固定宽度的图像视图。