-2

我有这个表视图:

表视图

这些都是自定义 - 静态单元格。

但在 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:separator & 2:UIPicker 单元格不受此影响?我可以让这些单元格成为常规 UITableViewCells 和其他 MyCustomCell 吗?

4

2 回答 2

2

-首先,如果您创建自定义单元格,则不应让 UITableViewController 拥有自定义单元格内部的属性...(特别是案例 0:在您的 switch 方法内部)该图像应包含在您的 customTableViewCell 类中.

即它将是cell.locationButtonImageView.image....等

这是我立即看到的最引人注目的事情。这就是面向对象编程的全部要点。包含属性的项目,在这种情况下是图像,几乎在所有情况下都应该是它的所有者。在某些情况下,您会从 superView 中传入属性,但这似乎不是这里的情况。解决这个问题,它可能也应该清除一些其他问题。

-第二:如果您遇到图像仅在您选择项目后才显示的问题,很可能是由于它仅针对某个设置UIControlState,无论是正常、选中、禁用等。

至于你的问题的标题:你只需要移动图像的框架,以便在你的 UITableViewCell 内更左对齐。您可以通过修改框架并创建新的CGRectusing来在代码中即时执行此操作CGRectMake(x,y,width,height)。或者更简单,您可以UITableViewCell在 Storyboard 内设置自定义原型内的位置。

于 2013-06-12T22:49:13.410 回答
0

好吧,当我在侧栏中找到它时,我正要创建一个自定义单元 xib 和所有内容:

缩进

最初设置为 1。我只是将其设置为 0,瞧!

于 2013-06-13T17:13:33.450 回答