使用Storyboard的一个UITableviewcontroller中的静态和动态单元格

时间:2014-03-12 11:44:55

标签: uitableview ios7 uistoryboard

我想要一个像enter image description here

这样的表格视图

我所理解的是他们使用静态单元而不是显示调用详细信息。如何制作类似上面的表格视图(动态单元格保存在静态单元格之间)。我经历了很多像这样的东西{ {3}},How to implement UITableView With Static and Dynamic Cells -- IOS,但无法找到解决方案。任何教程或建议都会受到赞赏。我仍然在努力实现这一目标。

2 个答案:

答案 0 :(得分:2)

我认为这很难做到。

  1. 首先,使用具有方法[YourCustomCell heightForItem:(object)yourItem]的自定义UITableViewCell。
  2. 使用-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath返回每行的单元格高度。我的代码中的示例:

    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { MyAddress *address = self.dataSource[indexPath.row]; return [MyAddressCell cellHeightForAddress:address]; }

  3. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath内,将数据填入您的单元格:

    MyAddress *address = self.dataSource[indexPath.row]; [cell fillWithAddress:address];

答案 1 :(得分:0)

我建议采用两种方法:

1

更简单的方法是为应用中可能存在的静态和动态表格视图单元格的每种可能组合创建不同的UITableViewController。这意味着当没有显示用户的通话记录时,上面的联系人应用程序将有一个UITableViewController,而当已经存在时,将显示另一个应用程序。这种方法存在缺点:a)如果您在具有呼叫日志的表视图控制器中并且日志被清除,则切换到无日志的可能很困难; b)如果你正在使用故事板,那么在许多视图控制器上复制粘贴原型单元也很困难。我确信还有更多功能,但对于一些功能简单的屏幕(那些不是形式的屏幕),以这种方式构建它的难易程度超过了它的缺点。

2

将您的屏幕视为静态UITableView,并在其中动态调整UIView。例如,上面的联系人应用程序将是一个包含4行的表格视图:自拍照和通话记录,家庭电话号码,Facetime和Notes。单张照片和通话记录在单个UIView中的单个自定义UITableViewCell中。如果没有显示用户的通话记录,则自定义UIView仅显示照片,但如果有,则还会显示通话记录。

简而言之,numberOfRowsInSection:是常量 - UIView内的UITableViewCell不是。如果一行动态显示或消失,请将其放在与其上方相同的行中,只需确保计算单元格的高度 heightForRowAtIndexPath:,具体取决于是否应显示或不显示动态组件。