Почему мой пользовательский UITableViewCell не отображается? - PullRequest
1 голос
/ 29 марта 2012

Я уже делал пользовательские UITableViewCells без проблем ... но я не могу понять, что происходит с моим текущим проектом.

Вот что я сделал ...

  1. Создать CustomCell.h (подкласс UITableViewCell)
  2. Создайте пустой XIB и перетащите в UITableViewCell. Установить черный фон.
  3. Изменить класс UITableViewCell в Интерфейсном Разработчике на CustomCell
  4. Импорт CustomCell.h в моем DetailViewController
  5. Изменить tableView:cellForRowAtIndexPath:
static NSString *CellIdentifier = @"Cell";

CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    NSLog(@"DO I GET HERE?");
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
    cell = [topLevelObjects objectAtIndex:0];
}

Я ожидал бы, что мои ячейки таблицы покажутся черными? Но они все еще показывают как белый ... какие-либо идеи? Спасибо!

Обновление: Хорошо, получается, он загружает пользовательскую ячейку ... Я добавил UILabel с некоторым белым текстом. Я не мог видеть это, но когда я выделил ячейку, я увидел, что текст был там. Теперь возникает вопрос: почему клетка игнорирует черный фон, который я для нее установил?

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Кажется, что игнорируется установленный мной цвет фона, поэтому я просто добавляю к нему UIView с цветом фона, и это, похоже, работает ..

1 голос
/ 29 марта 2012

РЕДАКТИРОВАТЬ: Что касается того, почему это не черный - я думаю, что есть что-то скрывающее ваш черный - наиболее вероятным кандидатом для этого является фон метки белый и нечеткий

Как и пункт 3.

Инспектор атрибутов (4-я вкладка) должен иметь идентификатор повторного использования, равный идентификатору, который вы собираетесь использовать повторно (вы используете @ "cell" в своем вопросе). Я бы попробовал использовать что-то более конкретное - ведь в некоторых приложениях у вас может быть много типов пользовательских ячеек.

Я думаю, что вам также необходимо преобразовать объекты topLevelObject в (CustomCell *), таким образом

if (cell == nil) {
    NSLog(@"DO I GET HERE?");
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
    cell = (CustomCell*)[topLevelObjects objectAtIndex:0];
}
0 голосов
/ 12 октября 2013

Вы должны зарегистрировать свою ячейку с табличным представлением

Это должно произойти до вызова этого делегата:

[self.tableView registerClass: [CustomCell class] forCellReuseIdentifier:@"CellIdentifier"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...