0

我使用的是 UIViewController 而不是 UITableViewcontroller,并且无法理解将静态内容添加到表中的概念。我以前以编程方式完成了动态内容,但从未做过静态内容。

这是我在 IB 中设计的:

在此处输入图像描述

所有这些内容都在 TableCell 内的“内容视图”中。

我已经设置了我的数据源和委托,我只返回了一个部分和一个单元格。这是我的单元格代码。通常我会使用一个数组来填充它,但我不知道如何处理 IB 中的静态内容。如何添加图片中的对象,最重要的是如何保留每个对象的位置?我希望我不必手动输入 x、y 坐标。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"SimpleTableItem";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }


    return cell;
}

编辑:静态单元格在 UITableViewController 中工作正常......有没有办法让它与 UIViewController 一起工作,还是我必须全部切换?

4

2 回答 2

1

您必须将 UITableViewController 用于静态单元格。

这是我使用 UIViewController 的解决方法。

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

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];
    }
    NSString * titol = [NSString new];
    NSString * valor = [NSString new];
    NSDictionary * el_contacte = [contactes objectAtIndex:(indexPath.row)];

    switch (indexPath.row) {
        case 0:
            titol = @"Nombre";
            valor = [el_contacte valueForKey:@"nombre_contacto"];
            break;
        case 1:
            titol = @"Teléfono";
            valor = [el_contacte valueForKey:@"telefono"];
            break;
        case 2:
            titol = @"Extensión";
            valor = [el_contacte valueForKey:@"extension"];
            break;
        case 3:
            titol = @"Móvil";
            valor = [el_contacte valueForKey:@"movil"];
            break;
        case 4:
            titol = @"Fax";
            valor = [el_contacte valueForKey:@"fax"];
            break;
        case 5:
            titol = @"email";
            valor = [el_contacte valueForKey:@"email"];
            break;

        default:
            break;
    }
    cell.textLabel.text = titol;
    cell.detailTextLabel.text = valor;

    return cell;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    NSString * retornar = [NSString new];
    switch (section) {
        case 0:
            retornar = @"Datos del cliente";
            break;
        case 1:
            retornar = @"Contacto";
            break;
        case 3:
            retornar = @"Personas";
            break;
        default:
            break;
    }
    return retornar;
}
于 2013-08-18T22:59:52.163 回答
0

是的,您可以在 UIViewController 中执行此操作,但您仍将使用动态单元格,但以静态方式。我的意思是,您在情节提要中设置了所有单元格的子视图,将您想要的任何文本放入标签中,并将图像放入任何图像视图中,等等。然后在 cellForRowAtIndexPath 中,您只需将单元格出列并返回它而不做任何其他事情. 如果您有多个具有不同内容的单元格,那么您需要创建不同的动态原型,每个原型都有自己的标识符。在 cellForRowAtIndexPath 中,使用 if-else 块来测试传入了哪个 indexPathRow,并在该位置将所需的正确单元格类型出列。

于 2013-08-19T01:20:39.780 回答