0

我有一个包含 TableView 的自定义 UIView。在表格上方,我计划展示一些其他项目。现在,我只想要一个按钮。

我正在创建一个 UIView 'headerView',并将按钮添加到它。按钮本身只是被操纵以在按下时更新其标题。

如果我将 headerView作为 tableHeaderView 添加表视图中,它就可以正常工作。

如果我在 tableview上方添加 headerView ,作为兄弟子视图,它会正确显示,但按钮标题不会更新。

我通过日志验证了更新按钮标签的方法被调用,但视图似乎需要刷新。

为什么会这样?我是否缺少一些简单的东西。

如果有帮助,请遵循代码。

注意:我没有使用 IB。

更新:我已将其缩小到一行。当我设置 tableview 的框架时,我将它添加到 headerView 下方,我将 origin.y 设置为 headerView.size.height。如果我将其更改为使用硬编码数字(即使是相同的值),按钮也会更新。

4

1 回答 1

1

没有任何代码很难诊断问题,但这里有一些常见的问题/解决方案可能会有所帮助。

  1. 使用 [button setTile:forState:] 而不是 button.titleLabel.text
  2. 通过在适当的视图上调用 setNeedsLayout 和/或 layoutIfNeeded,确保您没有错过任何对 layoutSubviews 的调用。
  3. 确保使用正确的控制事件将正确的选择器名称连接到正确的目标。

听起来因为它在某些情况下有效,所以 1 和 3 不是问题。此外,由于它在您设置不同的大小时工作,它可能是 2。tableview 将正确调用布局方法到它的标题视图,这可能是它作为表标题视图而不是正常兄弟视图工作的原因。

于 2012-05-15T18:54:28.907 回答