2011-01-25 9 views
0

この質問には数百万回の不具合がありましたので、誰かが間違っていた箇所を見つけられたら喜んで修正します。UITableCellViewの外観を変更する前に(UITableViewから)

連絡先アプリと同じように見えるテーブルビューを作成しようとしています。私の最初の問題は、 "John Appleseed"や "Martin Luther King"のように、ある行に太字と太字の両方の文字列があることです。私は私のUITableViewCell内に2つのUILabelsを持っている必要があると思った(私の最初の間違いの可能性がある)。

私がしたいのは、その2番目のUILabelをサブクラス化するのではなく、単に追加するだけです。私はUITableViewCellに別のUILabelを追加します(私の次の間違いの可能性があります)。

ただし、行がハイライトされている(まだ選択されていない)と、デフォルトのUILabelテキストは白に切り替わりますが、私の特別なUILabelは黒のままです。強調表示後に発生するUITableViewDelegateメソッドでは、UILabelテキストを強制的に白に変更することができます。これは、私が目に見える白い→黒のフラッシュを引き起こす。

私はサブクラス化した場合にオーバーライドできるUITableViewCellメソッド 'setHighlighted:animated:'を参照していますが、別の方法でそれにアプローチしたいと考えていました。

思考?

答えて

0

名前の別の部分と比例して姓を別々のビューに保持することは難しいと思うでしょう。特に、ビューがテーブルビューによってサイズ変更される可能性がある(たとえば、テーブルビューが編集モードのときにコントロールに対応するため)。

UITableViewCellのカスタムサブクラスを作成し、そのテキストを描画するためにその-drawRect:メソッドをオーバーライドする方がずっと簡単です。 NSStringUIStringDrawingカテゴリを参照して、NSStringのインスタンスに送信できるメッセージのリストについては、指定したポイントまたは特定の矩形内に描画するように指示してください。

+0

こんにちは、ありがとう、私はsizeWithFontを使用していました:2番目のUILabelを配置し、セルの幅から最初のラベルの幅を差し引いて2番目のサイズにします。 私は、layoutSubviewsメソッドのサブクラス化と実装を終了しました。私はsetHighlightedで上記の問題を解決しました: – rob5408

関連する問題