具有异构行的详细视图的最佳布局

时间:2009-10-17 15:27:13

标签: iphone uitableview

我从未见过包含多个异构行的详细视图的完美布局策略,例如,一行用于名称,一行用于地址,一个用于电子邮件,一个用于年龄......,就像“联系人”的名称编辑视图一样,但更复杂。

显然,它是一个完美的“表”,UITableView的组样式比行的简单列表更可取(参考联系人的名称编辑视图)。

但是,UITableView不够灵活,无法处理异构性:tableView:cellForRowAtIndexPath:方法会混淆不同行的复杂分支,如下所示:

switch (row) { 
    case kNameRowIndex: 
        nameField.text = name;
        break; 
    case kaddressRowIndex: 
        addressField.text = address;
        break; 
    case kEmailRowIndex: 
        emailField.text = email;
        break; 
    case kAgeRowIndex: 
        ageField.text = age;
        break;
    ...
    default:
}

如果可以在Interface Builder中使用静态UITableViewCells填充UITableView,这个问题可以完全解决,这似乎不可能,不是吗?

那么这些详细视图的最佳布局策略是什么?

2 个答案:

答案 0 :(得分:1)

在界面构建器中布局静态UITableViewCells根本不可能。

在视图控制器中,您可以为要使用的不同单元格设置IBOutlets。在视图控制器的XIB文件中,定义未在主视图中保存的UITableView单元并将它们连接到这些插座。当视图加载时,您将返回自定义UITableViewCells。

唯一棘手的部分是,如果它们具有不同的高度,请确保实现heightForRowAtIndexPath:以便您可以返回静态单元格的帧高度。

答案 1 :(得分:0)

为布局的可重用部分制作自定义UITableViewCells,并在 tableView:cellForRowAtIndexPath:中将需要的部分出列。如果您不想使用UITableView,请为您可能需要收集,命名和组织它们的每组数据使用自定义UIViews:例如。 UIAddressDetailsView - 国家,地区,城市,街道,数字等,UINameDetailsView - 名字,姓氏,姓名缩写,寻址公式等,UIPasswordAndEMailView ...