2013-01-17 3 views
0

Когда я добавляю пользовательские элементы управления в UITableViewCell (перетаскивая UILabel на ячейку таблицы в раскадровке), содержимое невидимо во время выполнения. Когда я нажимаю на строку таблицы (для ее выбора), появляется контент, но белый.UITableViewCell, пользовательский контент невидимый

настройки проекта: (резюме: создать супер-минимальный раскадровки проект с UITableView и несколько строк кода для создания контента):

Новый проект, одно приложение просмотра, Xcode 4.5.2, использовать раскадровки , Это создает проект, ориентированный на iOS 6.

Перетащите контроллер табличного представления на раскадровку, которая создает представление, содержащее UITableView и UITableViewCell по умолчанию в этой таблице.

Установите мой контроллер представления таблицы как начальную сцену.

Задайте строку идентификатора повторного использования для UITableViewCell (в редакторе раскадровки).

Создайте новый файл подкласса UITableView, заполните минимум материал данных запаса, чтобы получить несколько строк для заполнения текстом данных «строка XX».

Запуск проекта. Данные выглядят как ожидалось, несколько строк данных, обозначающих «Строка 0», «Строка 1» и т. Д. Нет проблем.

Теперь я перетаскиваю ярлык на свою ячейку таблицы на доске объявлений. Я ничего не меняю о свойствах. Я оставляю текст ярлыка, просто говоря «Ярлык» черными буквами.

См изображения по адресу: http://www.codexlumen.com/issue/storyboard.png

Выполнить проект снова.

Что я ожидаю: В моих рядах таблицы есть «Ярлык», появляющийся в строках, в черном тексте.

Что я на самом деле вижу: точно так же, как раньше. Текст «Ярлык» вообще не отображается.

Теперь, вот самое интересное:

Все еще работает, я нажимаю на строке таблицы, чтобы выбрать его. Теперь строка подсвечивается синим цветом, а «Ярлык» появляется в белом в том месте, где я разместил элемент управления меткой.

См изображения по адресу: http://www.codexlumen.com/issue/hilight.png

Так UILabel есть, это просто не больше втягиваются в не-hilighted строк ...

Понятия не имею, почему.

Некоторые другие комментарии:

  • Я не использую любые пользовательские ячейки таблицы подкласса.
  • Я ничего не добавлял в проект или не предпринимал никаких шагов, не упомянутых выше.
  • я не изменил свойство UITableView или UITableViewCell объектов раскадровки, за исключение, чтобы установить строку идентификатора повторного использования и перетащить UILabel на ячейку
  • Я попытался запустить как на моем 4s и Int он тренажер (с набором тренажера к различным конфигурациям устройства/os)
  • Я попытался изменить свойства метки (черный фон, зеленый текст и т. д.). Нет эффекта. Визуальное поведение не идентичны независимо от того, какие свойства я поставил (хотя «Ярлык» больше, если я увеличиваю текст)

Это 100% раскадровки. Я не создаю объекты UI в коде. Единственной ссылкой на UI в коде является код для заполнения ячейки таблицы, показанный ниже:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"MyCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    cell.textLabel.text = [NSString stringWithFormat:@"Line %i", indexPath.row]; 

    return cell; 
} 

ответ

2

Я вижу вашу проблему. Вы получаете доступ к свойствам стандарта UITableViewCell (т. Е. cell.textLabel) при использовании пользовательской ячейки. Просто убейте третью строку, чтобы увидеть разницу. Я бы предложил вам создать свои собственные выходы для каждого ярлыка, который вам нужен, а не использовать стандартные.

+0

Yah ... Я получаю это. Я никогда не использую запасные материалы при создании пользовательских ячеек, поэтому это всегда работало над прошлыми проектами ... Вы на 100% правы: элементы управления меткой UITableViewCell являются * поверх * любого пользовательского контента. Если я переместил UILabel к краям ячейки, я увижу, что она выглядывает из-за cell.textLabel, предоставленной UITableViewCell. -> Это научит меня быстро создавать протимент с контентом, а затем попытаться настроить, не удаляя запасные вещи! –

+2

И для того, чтобы закончить мысль: если вы не устанавливаете какой-либо текст для UILabels, предоставляемых UITableViewCell, они либо сворачиваются до нулевого размера, либо вообще не добавляются в представление (не уверены, что) ... позволяет настраивать пользовательский интерфейс элементы управления будут видны. Если вы установите для них текст, они непрозрачны, скрывая ваши пользовательские элементы управления. –

+0

'UITableView' и его семейные классы - самые загадочные вещи в iOS, о которых нельзя сказать точно. –

Смежные вопросы