UITextField, добавленный в contentView UITableViewCell, не отображается должным образом в Popover (iPad, iOS 4.2) - PullRequest
0 голосов
/ 06 января 2011

Я пытаюсь отобразить таблицу выбора во всплывающем окне на iPad.Я добавляю UITextField к UITableViewCell по умолчанию.Таблица сконфигурирована как секционированная таблица.

Она не рисуется правильно и не отображается.Если строка выбрана, UITextField становится видимым.Если вы щелкнете по другому ряду, он исчезнет.

Я играл с порядком подпредставления, но безрезультатно.То, что работало, состояло в том, чтобы установить UITableViewCell.backgroundColor = [UIColor clearColor].

Если я сделаю это, я думаю, что нужно установить цвет где-то еще, например, в представлении содержимого, 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];

1 Ответ

0 голосов
/ 06 января 2011

Обычно местом для установки backgroundColor объекта UITableViewCell является не tableView: cellForRowAtIndexPath :. Вы должны сделать это в + tableView: willDisplayCell: forRowAtIndexPath: +.

Вам не нужно менять backgroundColor для contentView.

...