0

iPadのポップオーバーに選択肢の表を表示しようとしています。UITextFieldをデフォルトのUITableViewCellに追加しています。テーブルはセクション化されたテーブルとして構成されます。

正しく描画されず、表示されません。行を選択すると、UITextFieldが表示されます。別の行をクリックすると、その行は消えます。

私は無駄にサブビューの順序で遊んだ。うまくいったのは、UITableViewCell.backgroundColor =[UIColorclearColor]を設定することです。

その場合は、コンテンツビュー、UITableViewCell.contentView.backgroundColor =[UIColorwhiteColor]などの別の場所に色を設定する必要があると思います。

ただし、それでも正しく表示されません。選択されていない、または選択されていない場合は問題なく表示されます。ただし、プログラムでアクセサリチェックマークを設定すると、アクセサリチェックマークの背景の半分がはっきりと表示され、テーブルの背景の色が暗くなります。

行が選択されている場合は問題ないように見えますが、別の行が選択されている場合は、UITextFieldのある行が選択解除されているため、ほんの一瞬、アクセサリの背景の半分がクリア(透明)になります。

何が間違っているのか、またはこれを回避する方法についてのアイデアや提案はありますか?Appleのドキュメントには、ContentViewにビューを追加することが適切な実装方法であると明確に記載されていますが、この場合は機能しないようです。

これが私が現在tableView:cellForRowAtIndexPath内に持っているコードです:

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(130, 10, 60, 26)];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.text = @"foo";
[cell.contentView addSubview:textField];
[textField release];

cell.contentView.backgroundColor = [UIColor whiteColor];
cell.backgroundColor = [UIColor clearColor];
4

1 に答える 1

0

一般に、UITableViewCellのbackgroundColorを設定する場所は、tableView:cellForRowAtIndexPath:ではありません。+ tableView:willDisplayCell:forRowAtIndexPath:+で実行する必要があります。

contentViewのbackgroundColorを変更する必要はありません。

于 2011-01-06T02:25:27.820 に答える