0

TableViewを含むカスタムUIViewがあります。テーブルの上に他のアイテムを表示する予定です。今のところ、ボタンが欲しいだけです。

UIView'headerView'を作成し、それにボタンを追加しています。ボタン自体は、押されたときにタイトルを更新するために装備されています。

headerViewをtableHeaderViewとしてテーブルビューに追加すると、問題なく機能します。

テーブルビューの上にheaderViewを兄弟サブビューとして追加すると、正しく表示されますが、ボタンのタイトルが更新されません。

ボタンラベルを更新するメソッドが呼び出されていることをログで確認しましたが、ビューを更新する必要があるようです。

なぜこれでしょうか?簡単なものが足りないのでしょうか。

それが役立つ場合に従うべきコード。

注:私はこれにIBを使用していません。

更新:1行に絞り込みました。headerViewの下に追加するテーブルビューのフレームを設定するとき、origin.yをheaderView.size.heightに設定しています。ハードコードされた番号(同じ値であっても)を使用するようにこれを変更すると、ボタンが更新されます。

4

1 に答える 1

1

コードなしで問題を診断するのは困難ですが、役立つ可能性のある一般的な問題/解決策をいくつか紹介します。

  1. button.titleLabel.text ではなく [button setTile:forState:] を使用します。
  2. 適切なビューで setNeedsLayout および/または layoutIfNeeded を呼び出して、layoutSubviews への呼び出しが欠落していないことを確認してください。
  3. 正しいコントロール イベントを使用して、正しいセレクター名が正しいターゲットにフックされていることを確認してください。

場合によっては機能するため、1と3は問題ではないようです。また、サイズを別の方法で設定すると機能するため、2 になる可能性があります。テーブルビューは、ヘッダー ビューに対してレイアウト メソッドを正しく呼び出すため、通常の兄弟としてではなく、テーブル ヘッダー ビューとして機能する可能性があります。

于 2012-05-15T18:54:28.907 に答える