UIView在它是tableHeaderView时更新,但在它是子视图时不更新

时间:2012-05-15 17:53:28

标签: ios cocoa-touch uiview addsubview

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

我正在创建一个UIView'headerView',并向其添加按钮。按钮本身只是在按下时更新它的标题。

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

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

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

为什么会这样?我错过了一些简单的事情。

要遵循的代码,如果有帮助的话。

注意:我没有使用IB。

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

1 个答案:

答案 0 :(得分:0)

在没有任何代码的情况下很难诊断问题,但这里有一些可能有用的常见问题/解决方案。

  1. 使用[button setTile:forState:]而不是button.titleLabel.text
  2. 通过在适当的视图上调用setNeedsLayout和/或layoutIfNeeded,确保您没有错过对layoutSubviews的任何调用。
  3. 确保使用正确的控制事件将正确的选择器名称连接到正确的目标。
  4. 听起来好像因为它在某些情况下有效,1和3不是问题。此外,因为当你设置不同的大小时它可以工作,它可能是2. tableview将正确调用布局方法到它的标题视图,这可能是它作为表标题视图而不是正常兄弟的原因。