为什么我的CustomCell类没有正确显示?

时间:2011-05-27 20:11:54

标签: iphone uitableview custom-cell

嘿所有,我正在尝试创建一个商业搜索风格的应用程序,并希望创建一个自定义单元格来向用户显示一些信息。我已经让单元格显示我想要提供的所有信息,但格式是关闭的。这是我用来创建单元格的代码。

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

    static NSString *CellIdentifier = @"CustomCell";

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) 
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCellView" owner:self options:nil];

#ifdef __IPHONE_2_1
        cell = (CustomCell *)[nib objectAtIndex:0];
#else
        cell = (CustomCell *)[nib objectAtIndex:1];
#endif
    }

    // Configure the cell.
    NSDictionary *dict = [rows objectAtIndex: indexPath.row];

    cell.bizNameLabel.text = [dict objectForKey:@"name"];
    cell.addressLabel.text = [dict objectForKey:@"address"];

    NSMutableString *detailed = [NSMutableString string];
    [detailed appendString:[dict objectForKey:@"distance"]];
    [detailed appendString:@"mi"];
    cell.mileageLabel.text = detailed;

    // determine the rating for the business
    NSString *icontype = [dict objectForKey:@"rating"];
    NSInteger rating = [icontype intValue];
    UIImage *image;
    // variable to change the color of the cell's background
    UIView *bg = [[UIView alloc] initWithFrame:cell.frame];

    // switch statement to determine the rating image to be displayed
    switch (rating) {
        case 1:
        {
            image = [UIImage imageNamed:@"1.png"];
            bg.backgroundColor = [UIColor yellowColor]; 
            break;
        }
        case 3:
        {
            image = [UIImage imageNamed:@"3.png"];
            bg.backgroundColor = [UIColor orangeColor]; 
            break;
        }
        case 5:
        {
            image = [UIImage imageNamed:@"5.png"];
            //bg.backgroundColor = [UIColor redColor]; 
            cell.backgroundColor = [UIColor redColor];
            break;
        }
        default:
            break;
    }

    [cell.ratingImage setImage:image];
    cell.backgroundView = bg;
    [bg release];


#ifdef __IPHONE_3_0
    cell.accessoryType =  UITableViewCellAccessoryDisclosureIndicator;
#endif

    return cell;
}

然后我在IB中创建了这样的布局......

(前两个问题已经解决,我使用了错误的图像变量来显示图像)

选择之后,你可以说事情没有了什么

![在此输入图片说明] [3]

在IB中,我将单元格的尺寸设置为320宽度,高度为80,并且在“缩进”选项卡下,我将类更改为CustomClass。我敢肯定我忽略了一些微不足道的事情,但如果有人能给我一块骨头,我会感激不尽。我已经解决了我所遇到的问题,图像没有显示我想要的位置,但我仍然遇到问题,背景颜色没有变化,字体大小显示不同,当选择单元格时,它与单元格分隔符重叠。

注意:试图包括屏幕截图,但因为我是新手所以不会让我。我提供了一个链接,我将所选单元格的图像与下面的分隔符重叠。

http://s1216.photobucket.com/albums/dd361/cabearsfan/?action=view&current=screenshot2.png

2 个答案:

答案 0 :(得分:0)

好像你没有使用UIImageView的nib引用,但是你正在使用单元格的默认imageView属性。

答案 1 :(得分:0)

我会说在图像视图框架和你给它的图像尺寸之间存在不匹配。

在调用setImage之后,添加此代码以查明发生了什么:

NSLog(@" imageView frame %f,%f, %f, %f",imageView.frame.origin.x,imageView.frame.origin.y,
    imageView.frame.size.width,imageView.frame.size.height);
NSLog(@" image  size %f x %f", image.size.width, image.size.height);