为单元格进行自定义但不起作用

时间:2012-01-01 20:42:09

标签: iphone

我的目的是为我的表格视图的一行自定义单元格。所以我在做:

MyClass.m
    1 .- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{  
    3 .    NSLog(@"section %d:row %d",indexPath.section, indexPath.row);
    4 .    static NSString *CellIdentifier = @"reusedCell";   
    5 .    DetailCell *cell    = (DetailCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    6 .    cell.backgroundColor    = [UIColor clearColor];
    7 .    // Customize the cell of each row from table
    8 .    **if ( cell == nil ) {
    9 .        cell    =   [[DetailCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    10.    }**
    11.    return cell;
    12.}

我的DetailCell类是

    1.- (DetailCell*)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{

    2.   if (self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier]){
    3.  itemImg     =   [[UIImageView alloc]    initWithFrame:CGRectMake(20 , 20, 50  , 70)];
    4   itemName    =   [[UILabel  alloc]       initWithFrame:CGRectMake(100, 0 , 100 , 50)];
    5.  itemDesp    =   [[UILabel  alloc]       initWithFrame:CGRectMake(100, 40, 1000, 20)];
    6   itemSize    =   [[UILabel  alloc]       initWithFrame:CGRectMake(100, 60, 100 , 20)];
    7   itemPrice   =   [[UILabel  alloc]       initWithFrame:CGRectMake(200, 60, 100 , 20)]; }
    8.   [itemImg setImage:[UIImage imageNamed:@"large/dresses/02/71EU6.png"]] ;
    9.   itemName.text = @"Dresses";
    10.   itemDesp.text = @"Description";
    11.   itemSize.text = @"S";
    12.   itemPrice.text = @"$99";
    13.   itemSize.textColor = [UIColor purpleColor];

    14.   [self.contentView addSubview:itemImg];
    15.   [self.contentView addSubview:itemName];
    16.   [self.contentView addSubview:itemDesp];
    17.   [self.contentView addSubview:itemSize];
    18.   [self.contentView addSubview:itemPrice];
    19.        return self;
    20.    }

要在我的表格行上显示img或文本,我在UIImageView上设置了img + text,在 DetailCell 中设置了Label(第8行---> DetailCell第13行)。 但是,当我阅读了一些读数并且我意识到人们使用诸如DetailCell之类的类来创建框架+为UIImageView + Label添加属性。最后,他们将在 myClass.m 中的单元格上显示图像或文本。 这让我感到困惑,因为我们应该在 MyClass.m DetailCell.m 为UIImageView设置img。 请告诉我这个问题。感谢。

1 个答案:

答案 0 :(得分:0)

如果单元格不是零,则不起作用。您通常会根据节或行配置单元格。您想要自定义哪些单元格?假设您希望第一个单元格像这样设置,而其他单元格不是......

switch (indexPath.row) {
    case 0: 
        cell = [[DetailCell alloc] initWithStyle:UITableViewCellStyleDefault
                                 reuseIdentifier:CellIdentifier];
        break;
    default:
        /*
         * Configure the rest of the cells... 
         *
         * Use case 1, 2, 3, 4, etc. as needed.
         * You can then use default to set the default configuration
         */
         break;
 }

您可以尝试这样的方法。还要确保你没有这个:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

这是默认设置,将限制您可以拥有的单元格数量。如果您有多个部分,请使用类似于上一个示例中使用的switch语句。