在没有IB的情况下制作UITableView

时间:2011-11-28 06:59:22

标签: objective-c

我在没有IB的情况下制作UITableView。 我的UITableView有2个样式UITableViewCell - 第一行样式和其他行样式。

我使用MTLable Class而不是UILabel。

问题: 这段代码的结果很奇怪。 滚动下一页时,第一个单元格样式和其他单元格样式混合在一起。 我找不到代码的错误。

我需要你的建议。谢谢!

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

    static NSString *CellIdentifier  = @"";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

     if (cell == nil) {
         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];


         //firsT cELL 
         if(indexPath.row==0)
         {
             CGRect frame=CGRectMake(0,0,80, 60);
             MTLabel *label1=[[MTLabel alloc] init]; 
             label1.backgroundColor = [UIColor grayColor]; 
             label1.frame=frame;
             label1.text=@"123";
             label1.tag = 1001; 
             [cell.contentView addSubview:label1];

             label1.autoresizingMask = UIViewAutoresizingFlexibleTopMargin &UIViewAutoresizingFlexibleWidth & UIViewAutoresizingFlexibleLeftMargin & UIViewAutoresizingFlexibleRightMargin; 

             label1.contentMode = UIViewContentModeTopLeft; 
             [label1 setTextAlignment:MTLabelTextAlignmentRight];

             [label1 release];

         }
         else
         {
             CGRect frame3=CGRectMake(0,0,80, 60);
             MTLabel *label3=[[MTLabel alloc]init];            
             label3.frame=frame3;
             label3.backgroundColor = [UIColor purpleColor]; 
             label3.text=@"100";
             label3.tag = 1003; 

             label3.autoresizingMask = UIViewAutoresizingFlexibleTopMargin &UIViewAutoresizingFlexibleWidth & UIViewAutoresizingFlexibleLeftMargin & UIViewAutoresizingFlexibleRightMargin; 

             label3.contentMode = UIViewContentModeTopLeft; 
             [label3 setTextAlignment:MTLabelTextAlignmentRight];


             [cell.contentView addSubview:label3];
             [label3 release];
          }
      }

    FTS_book *book = [items objectAtIndex:indexPath.row];


    if(indexPath.row==0)
    {
        MTLabel *label1 = (MTLabel*)[cell viewWithTag:1001];
        label1.text= [NSString stringWithFormat:@"%d", book.chapter];

    }
    else
    {
        MTLabel *label3 = (MTLabel*)[cell viewWithTag:1003];
        label3.text= [NSString stringWithFormat:@"%d", book.verse];

    }     

     return cell;

}

1 个答案:

答案 0 :(得分:4)

为这两种样式使用不同的单元格ID。