我似乎在理解子视图的工作方式时遇到了问题。我有一个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
中,而不必每次都手动定义偏移量?
答案 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"];