我有这个tableview:
这些都是自定义 - 静态单元格。
但是在sim / device中它看起来像这样:
我像这样填充单元格:
#pragma mark - TableView Cell Methods
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease];
switch (indexPath.row) {
case 0:
cell.imageView.image = [UIImage imageNamed:@"Usar mi ubicacion actual.jpg"];
break;
case 1:
break;
case 2:
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
self.myCity = [[UITextField alloc] initWithFrame:CGRectMake(20,10,200,35)];
self.myCity.text = @"Seleccione su ciudad...";
self.myCity.borderStyle = UITextBorderStyleRoundedRect;
[cell.contentView addSubview:self.myCity];
//Call UIPicker
break;
case 3:
cell.imageView.image = [UIImage imageNamed:@"Farmacias-con-Autoservicio.png"];
break;
case 4:
cell.imageView.image = [UIImage imageNamed:@"Farmacias-abiertas-en-este-momento.png"];
break;
case 5:
break;
default:
break;
}
return cell;
}
我知道我需要将cell.imageView的帧重置为更靠近左边缘的东西,例如CGRectMake(5,5,width,height)。要做到这一点,我需要继承我所做的UITableViewCell(MyCustomCell)并将此代码添加到它:
- (void)layoutSubviews {
[super layoutSubviews];
self.imageView.frame = CGRectMake(5.0f , 5.0f, 175.0f, 40.0f);
}
现在这将使每个单元格开始靠近左边缘。但是我怎么做到1:分隔符& 2:UIPicker细胞不受此影响?我可以将这些单元格定义为UITableViewCells和其他MyCustomCell吗?
答案 0 :(得分:2)
- 首先,如果您创建自定义单元格,则不应该让UITableViewController拥有自定义单元格内部的属性...(特别是对于案例0:在switch方法内部)该图像应该包含在你的customTableViewCell类。
即。它将是cell.locationButtonImageView.image
....等
这是我直接看到的最引人注目的事情。这是面向对象编程的整个要点。包含属性的项目(在本例中为图像)几乎在所有情况下都应该是它的所有者。在某些情况下,您从superView传递属性,但这似乎不是这里的情况。解决这个问题,它应该可以解决其他一些问题。
- 第二:如果您遇到的问题是图片仅在您选择项目后才会显示,则很可能是因为它仅设置为某个UIControlState
,无论是正常,选择,禁用等。
至于问题的标题:你只需要移动图像的框架,使其在UITableViewCell内更加左对齐。您可以通过修改框架并使用CGRect
创建新的CGRectMake(x,y,width,height)
,在代码中动态执行此操作。或者甚至更简单,您只需在Storyboard中设置自定义UITableViewCell
原型内的位置。
答案 1 :(得分:0)
好吧,当我在侧栏中发现这个时,我就要创建一个自定义单元格xib和所有内容:
最初设置为1.我只是将其设置为0并且瞧!