UITableView с пользовательскими ячейками отлично подходит для iOS 6, но полностью белым в iOS 7
Я создаю приложение на Xcode 5, которое предназначено для iOS 6+.
У меня возникли проблемы с созданием табличного представления с пользовательскими ячейками. Интересно, что он отлично работал, пока я не обновился до Xcode 5.0.2 сегодня (я не знаю, что изменилось). В моем представлении таблицы нарисовал простой белый (снимок экрана ниже), прежде чем я перепутал с белым стилем навигации (я понятия не имею, как они также связаны друг с другом), который поставляется с iOS 7 SDK. Во всяком случае, когда я удалил индикатор состояния строки из моего кода, мой вид таблицы использовался, чтобы рисовать нормально, хотя у меня есть черная строка состояния. Сегодня, после установки Xcode 5.0.2, я построил один и тот же проект без изменения какого-либо кода, и теперь мой табличный вид выглядит белым на iOS 7 (как на устройстве, так и на симуляторе). Когда я переключаюсь на iOS 6, он отлично отображает (как устройство, так и симулятор). Я пробовал очистить папку сборки, очистить производную папку данных, перезапустить Xcode / simulator / device, но ничего не изменилось. Кроме того, приложение начало отображать белую строку состояния, которая не была до обновления Xcode. Я знаю, что они должны быть неактуальными, но сейчас мне сложно разрабатывать приложение. Ячейки получают все события касания, вид таблицы просматривает, я получаю все NSLog
s на выходе, и я могу видеть полосу прокрутки при прокрутке вниз. Он просто не рисует. У меня был пользовательский код drawRect:
в моих пользовательских ячейках. После просмотра пользовательского CG-рисунка UITableViewCell iOS 7 и подкласса UITableViewCell – backgroundView закрывает все, что я делаю в drawRect Я прокомментировал этот код, но это не помогло. Вот что я получаю на iOS 7 (выделенная ячейка в сером цвете):
- Как сосредоточиться на последней ячейке в UITableview с прокруткой анимации?
- Swift: получение «Снимок снимка, который не был обработан ..» при попытке открыть URL-адрес в сафари из моего приложения
- Автозапуск не работает с многократно используемыми ячейками таблицы
- UITableView: выбор ячейки ячейки в смешанной ячейке таблицы статические и динамические ячейки
- В ios7 UITableViewCellAccessoryDetailDisclosureButton разделен на две разные кнопки аксессуаров
И вот одно и то же приложение на iOS 6 (размытый текст / изображения для конфиденциальности):
Вот код для -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
:
MyFriendViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"friendTableCell"]; if(!cell){ cell = [[[NSBundle mainBundle] loadNibNamed:@"MyFriendViewCell" owner:self options:nil] lastObject]; } /* some code that sets text fields/images */ [...] return cell;
У меня есть XIB-файл (только с одним объектом, мой собственный класс ячеек) и класс, соответствующий ячейке. Я зарегистрировал свою ячейку в начале:
[self.tableView registerNib:[UINib nibWithNibName:@"MyFriendViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"friendTableCell"];
Я проверил cell
в методе, dequeue никогда не возвращает нуль в любом случае.
UPDATE: Я также понял, что мое приложение использует 100% процессор, когда он работает на этом экране как на iOS 6 (хотя он работает правильно), так и на iOS 7).
ВАЖНО: на вопрос был дан ответ, но любому из вас, кто задавался вопросом о drawRect:
проблема не имела к этому никакого отношения, я все еще использую пользовательский drawRect:
и он отлично работает.
- Обнаружен зомби - но функция никогда не вызывалась
- Пользовательский UITableViewCell с дополнительным изображением
- фатальная ошибка: индекс вне диапазона
- Динамическая высота UITableViewCell + скрытые элементы занимают место в Swift?
- NSIndexPath? не имеет имени члена 'row' в Swift
- Создание UITableViewCell в XIB или в коде?
- Субтитры Tableview на IOS7
- Анимация пользовательских представлений заголовков раздела UITableView
2 Solutions collect form web for “UITableView с пользовательскими ячейками отлично подходит для iOS 6, но полностью белым в iOS 7”
setcontentview
backgroundColor
для очистки цвета
Этот ответ @Kjuly на аналогичный вопрос – это то, что я использовал для решения этой проблемы. Важная часть заключается в том, чтобы добавить этот метод к делегату табличного представления:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { [cell setBackgroundColor:[UIColor clearColor]]; }