为什么UITableView的单元格被插入表头之上?

时间:2017-03-21 11:28:03

标签: xcode8 ios10

问题和屏幕截图几乎都说明了一切。正在从已在表中注册的笔尖创建单元格。

xcode interface builder

iPhone simulator

更新:我决定深入研究lldb:

(lldb) po servicesTable.tableHeaderView  
nil

(lldb) po characteristicsTable.tableHeaderView  
nil

标题视图为零!这是否意味着我被我在故事板上看到的东西所迷惑?我实际上还没有创建表头?

让我们继续挖掘:

`(lldb) po characteristicsTable!.subviews
▿ 4 elements
  - 0 : <UITableViewWrapperView: 0x7f89f4840a00; frame = (0 0; 343 270.5); gestureRecognizers = <NSArray: 0x610000051070>; layer = <CALayer: 0x61000003df00>; contentOffset: {0, 0}; contentSize: {343, 270.5}>
  - 1 : <UIImageView: 0x7f89f2d1c6a0; frame = (3 265; 337 2.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x600000224840>>
  - 2 : <UIView: 0x7f89f50162a0; frame = (0 100; 343 44); autoresize = RM+BM; layer = <CALayer: 0x618000039e80>>
  - 3 : <UIImageView: 0x7f89f2c1c370; frame = (337.5 179.5; 2.5 88); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x6080004241e0>>`

(lldb) po characteristicsTable!.subviews[2].subviews ▿ 2 elements - 0 : <UILabel: 0x7f89f5016570; frame = (8 8; 327 28); text = 'Characteristics'; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x61800008cbc0>> - 1 : <UIButton: 0x7f89f2d06f40; frame = (313 11; 22 22); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x600000223300>>

好吧,索引2处的特征表子视图是我们看到标记为&#34; Header&#34;在故事板的文档大纲中(即包含带有文本&#34;标签&#34;以及按钮)的标签的视图。

让我们试试这个:

(lldb) expression characteristicsTable.tableHeaderView = characteristicsTable.subviews[2]

瞧!特征表的标题位置正确。

enter image description here

从这一切我得出的结论是,我不知道如何将视图拖到桌面上并让它成为表格的标题。任何人都可以建议吗? (我会继续试验)

1 个答案:

答案 0 :(得分:0)

要使用Interface Builder将表头添加到UITableView,请将视图拖到文档大纲中的表视图条目中。 不要将视图拖到故事板中的表格视图渲染上。哎呀!这些微妙之处令人恼火。

(lldb) po servicesTable.tableHeaderView ▿ Optional<UIView>