2011-04-28 6 views
5

UITableViewCellは、セルがハイライト表示されているとき(ユーザーがセルにタッチしたとき)、contentView階層のコンテンツを変更します。私が今までに見つけたハイライトイベントでUITableViewCellの文書化されていない動作を明確にする

二つの例:

  • 背景色でセルのcontentViewでのUIViewを置きます。その表のセルがハイライト表示されている場合は、そのUIViewの背景色が削除されます(背景がはっきりと設定されているようです)。
  • UIButtonをcontentViewに配置します。セルが強調表示されると、ボタンも強調表示された状態になります。

セルの階層内のすべてのビューを検査し、神秘的な一連のルールに従ってそれらを変更するのUITableView細胞におけるいくつかのロジックがありますかのように、細胞が非強調表示されたらそれは、その後、正常に戻ってそれらを復元しています。

私のカスタムテーブルビューのセルのコンテンツでUITableViewCellが(予期せず、文書化されていない方法で)何を変更しているのか説明できますか?

ありがとうございます!

答えて

1

以下の通りのUITableViewCellの強調表示はApple docsに記載されている:

強調表示ラベル、画像、及び 背景の外観に影響を与えます。ハイライト表示されたセルの状態がYESに設定されている場合、ラベル は、強調表示されたテキスト の色で描画されます(デフォルトは白です)。デフォルトの の値はNOです。この プロパティで の強調表示された状態をYESに設定すると、新しい 状態の外観への遷移はアニメーション化されません。 アニメーションのハイライト状態の トランジションについては、 setHighlighted:animated:メソッドを参照してください。

正しく に動作するように強調するために、あなたはセルのtextLabelを使用して ラベルや detailTextLabelのプロパティを取得し、 に各ラベルのhighlightedTextColor プロパティを設定する必要があることに注意。イメージの場合は、imageViewプロパティを使用してセルの イメージを取得し、 UIImageViewオブジェクトの highlightedImageプロパティを設定します。

これはUIButtonについては言及していませんが、this postは、セルが強調表示された状態になるのを防ぐ方法についてです。

+2

ありがとうございます。これは部分的なドキュメントにすぎませんが、任意のUIView backgroundColorプロパティもクリアに変更された方法については説明していませんので、間違いなく不完全な説明です。私はそれが答えに変わるすべてのものを手に入れたいです。しかし、setHighlighted:animated:とsetSelected:animated:をオーバーライドしてカスタムハイライト/選択状態を実装するソリューションは、オーバーライドでsuperメソッドを呼び出さないことで、混在/文書化されていないハイライトの変更を完全に防ぐことができます自分ですべてをやります。 – Yetanotherjosh

関連する問題