将视图添加到UITableViewCell contentView,将视图放在错误的位置

时间:2013-11-16 07:16:40

标签: ios uitableview ios7 uitextfield

我似乎在理解子视图的工作方式时遇到了问题。我有一个UITextfield,我想将其添加到UITableViewCell的内容视图中,所以我这样做:

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

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];

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

    }    // Configure the cell...
    UITextField *tf = [textFieldsArray objectAtIndex:[indexPath row]];
    tf.frame = CGRectMake(0, 0, 100, 12);
    [cell.contentView addSubview:tf];
    return cell;
}

我假设通过将textfields frames origin(0,0)作为子视图添加到内容视图时,它将把它放在位置(0,0)的内容视图中,但这不会发生,它实际上将它放在整个单元格的位置(0,0)(单元格的左上角)。

除非在iOS7中更改过,否则我认为内容视图是这样的:

content view http://www.idev101.com/code/User_Interface/UITableView/cellEditAnatomy.png

如果是这样,有没有办法可以将其放在contentView中,而不必每次都手动定义偏移量?

1 个答案:

答案 0 :(得分:0)

     Try This 


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

        UIImageView *img=[[UIImageView alloc]init];
        img.tag=100;
        img.layer.cornerRadius = 3;
        img.layer.masksToBounds = YES;
        [cell addSubview:img];


        UILabel *lbl= [[UILabel alloc]init];
        lbl.backgroundColor= [UIColor clearColor];
        lbl.text=@"ABC";
        lbl.textAlignment=NSTextAlignmentLeft;
        lbl.textColor=[UIColor blackColor];
        lbl.tag=200;
       [cell addSubview:lbl];


     }
img1=(UIImageView *)[cell viewWithTag:100];

NSArray *imgDataArr = [[NSArray alloc] initWithArray:[[arrFields objectAtIndex: storyIndex] objectForKey: @"image"]];

for (UIImage *image in imgDataArr)
{
    if (image)
        img1.image =image;
}
[cell addSubview:img1];


UILabel *lbl1 = (UILabel*)[cell viewWithTag:200];
[cell addSubview:lbl1];
lbl1.numberOfLines=3;
lbl1.text=[[arrFields objectAtIndex: storyIndex] objectForKey: @"Item_No"];