У меня есть UITableView
, который показывает очень странное поведение при перезагрузке.По какой-то причине некоторые границы табличного представления просто пропадают (хотя я никогда не изменял их), но показанные метки ячеек верны.
Если я просто перезагрузлю одну строку, эта строка теряет свои границы.Если я перезагружу всю таблицу, вся таблица теряет свои границы.
Я использую белый фон, и ячейки также имеют белый фон, в то время как UITableView
использует стиль группы.
Я не видел такого поведения раньше - это ошибка?
Вот как я настраиваю таблицу:
settingsController.view.backgroundColor = [UIColor whiteColor];
_settingsTable = [[UITableView alloc] initWithFrame:[UIApplication sharedApplication].keyWindow.frame style:UITableViewStyleGrouped];
_settingsTable.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_settingsTable.delegate = self;
_settingsTable.dataSource = self;
_settingsTable.backgroundView = nil;
[settingsController.view addSubview:_settingsTable];
и ячейки становятся белыми с помощью этого простого кода:
cell.backgroundView = nil;
cell.backgroundColor = [UIColor whiteColor];

Как видно на скриншоте выше, ячейка тома потеряла свои границы после перезагрузки ячейки.Кто-нибудь знает, что происходит?
Редактировать: Вот как я решил это:
Кажется, есть ошибка в UITableView
.Как вы, возможно, знаете, UITableView
не заботится о свойстве backgroundColor
, поскольку его фон загружается в отдельном представлении, которое по умолчанию является текстурированным изображением.При установке значения null
в табличном представлении отображались ошибки отображения.
Я исправил это, просто создав отдельный белый вид - теперь он работает нормально.
UIView*whiteBg = [[UIView alloc] initWithFrame:_settingsTable.frame];
whiteBg.backgroundColor = [UIColor whiteColor];
_settingsTable.backgroundView = whiteBg;
[whiteBg release];