代码之家  ›  专栏  ›  技术社区  ›  an0

具有异类行的局部视图的最佳布局

  •  1
  • an0  · 技术社区  · 16 年前

    我从来没有见过一个完美的细节视图布局策略,包含多个不同的行,例如,一行代表姓名,一行代表地址,一行代表电子邮件,一行代表年龄…,就像联系人的姓名编辑视图一样,但更复杂。

    显然,这是一个完美的“表格”功能,与简单的行列表(参见联系人的名称编辑视图)相比,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 回复  |  直到 16 年前
        1
  •  1
  •   Kendall Helmstetter Gelner    16 年前

    在Interface Builder中布局静态UITableViewCells并非完全不可能。

    在视图控制器中,可以为要使用的不同单元格设置IBoutlets。在视图控制器的XIB文件中,定义不在主视图中的uiTableView单元格,并将其连接到这些插座。加载视图时,您将拥有自定义的UITableViewCells,可以返回。

    唯一棘手的部分是,如果它们的高度不同,请确保实现rowatindexpath的高度:这样您就可以返回静态单元的帧高度。

        2
  •  0
  •   luvieere    16 年前

    为布局的可重用部分创建自定义的UITableViewCells,并在需要时将其出列到 表视图:cellForRowatindexPath: . 如果不想使用uiTableView,请对可能需要收集、命名和组织的每组数据使用自定义uiView:例如uiAddressDetailsView-国家、地区、城市、街道、号码等,uiNameDetailsView-名字、姓氏、首字母、寻址公式等,uiPasswordAndEmailView…

    推荐文章