我从未见过包含多个异构行的详细视图的完美布局策略,例如,一行用于名称,一行用于地址,一个用于电子邮件,一个用于年龄......,就像“联系人”的名称编辑视图一样,但更复杂。
显然,它是一个完美的“表”,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,这个问题可以完全解决,这似乎不可能,不是吗?
那么这些详细视图的最佳布局策略是什么?
答案 0 :(得分:1)
在界面构建器中布局静态UITableViewCells根本不可能。
在视图控制器中,您可以为要使用的不同单元格设置IBOutlets。在视图控制器的XIB文件中,定义未在主视图中保存的UITableView单元并将它们连接到这些插座。当视图加载时,您将返回自定义UITableViewCells。
唯一棘手的部分是,如果它们具有不同的高度,请确保实现heightForRowAtIndexPath:以便您可以返回静态单元格的帧高度。
答案 1 :(得分:0)
为布局的可重用部分制作自定义UITableViewCells,并在 tableView:cellForRowAtIndexPath:中将需要的部分出列。如果您不想使用UITableView,请为您可能需要收集,命名和组织它们的每组数据使用自定义UIViews:例如。 UIAddressDetailsView - 国家,地区,城市,街道,数字等,UINameDetailsView - 名字,姓氏,姓名缩写,寻址公式等,UIPasswordAndEMailView ...