UITableViewCell initWithStyle: UITableViewCellStyleSubtitle не работает

У меня возникла проблема с попыткой отобразить информацию в ячейке, одну слева и одну справа. Я знаю, используя initWithStyle с UITableViewCellStyleSubtitle . Я использую это, но он не работает.

Вот пример кода:

 - (UITableViewCell *)tableView:(UITableView *)ltableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Account Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:Cellidentifier]; } Accounts *account = [self.fetchedResultsController objectAtIndexPath]; cell.textLabel.text = account.name; cell.detailTextLabel.text = @"Price"; return cell; } 

Я могу показать cell.textLabel.text просто отлично, однако я не могу получить простую «цену», которая будет отображаться. Я пробовал разные вещи, такие как установка размера шрифта cell.detailTextLabel .

Я также попробовал UITableViewCellStyleValue1 как некоторые предложили в более старых сообщениях. Бросил NSLog после установки на «Цена», показывает cell.detailTextLabel как null.

Не уверен, что я делаю неправильно.

Изменить: я нашел это: cell.detailTextLabel.text NULL

Если я удалю if (cell == nil) это сработает … Эта проверка должна быть на месте, так как вы заставляете ее работать при использовании разных стилей?

При использовании раскадровки и ячеек прототипа ячейка всегда возвращается из метода dequeue (при условии, что прототип с этим идентификатором существует). Это означает, что вы никогда не попадаете в блок (cell == nil) .

В вашем случае ячейка прототипа не определена в раскадровке с типом субтитров, поэтому ячейка с субтитрами никогда не используется, а текстовая метка детали не существует. Измените прототип в раскадровке, чтобы иметь стиль субтитров.

Удалите весь свой код только после того, как вы попробуете эти строки, и убедитесь, что это будет работать или нет.

  -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; } cell.textLabel.text=[Array objectAtIndex:indexPath.row]; [email protected]"Price"; return cell; } 

Я вижу проблему: в имени вашего метода переменная UITableView называется ltableView , а не tableView . Измените его на tableView .

cell.detailTextLable.text должен быть cell.detailTextLabel.text . Это похоже на простое неправильное написание этикетки.

Все ответы, упомянутые здесь, действительно являются обходным путем, то есть с использованием раскадровки. Вот способ сделать это только в коде.

В основном вместо того, чтобы регистрировать идентификатор ячейки в viewDidLoad, делайте это только один раз в методе cellForRowAtIndexPath:. Также сбросить ячейку, зарегистрированную в viewDidLoad __sCellRegistered = 0;

  static int _sCellRegistered = 0; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = nil; if (__sCellRegistered == 0) { __sCellRegistered = 1; NSLog(@"register cell"); cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"CellIdentifier"]; [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"CellIdentifier"]; }; if (!cell) { NSLog(@"dequeue"); cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier" forIndexPath:indexPath]; } 
  • UITableView reloadData ничего не делает (UITableView не ноль)
  • Программно эмулировать выбор в UITableViewController в Swift
  • iOS UITableView numberOfRowsInSection BAD ACCESS
  • Управление обновлением UITableViewController равно нулю
  • пользовательская ячейка не отображается в виде таблицы
  • iOS> 8: проблема с UITableViewAutomaticDimension и layoutIfNeeded
  • Нарисуйте тень поверх UITableViewCell
  • Динамическое обновление контента в UITableView, доступном для VoiceOver
  • UITableView datasource и делегат не будут подключаться к пользовательскому классу
  • Swift UITableView удаляет выбранную строку и любые строки над ней
  • Одновременное перемещение и обновление UITableViewCell и NSFetchedResultsController
  • Interesting Posts

    Проект Xcode с разными версиями файла для каждой цели?

    NSLinkAttributeName не работает в UITextView

    Обработчик кликов не выполнен для UIButton в UIBarButtonItem

    UIKeyboardTaskQueue может вызываться только из основного потока

    Автоматическая компоновка: layoutMarginsGuide

    Добавить изображение в UIView

    Swift 3.0 Ошибка: закрытие закрытий может только фиксировать inout параметры явно по значению

    CATiledLayer удаляется и обновляется при увеличении количества iPad 3-го поколения

    Доступ к текстовому полю UIAlertController – быстрый ios8

    Как я могу использовать UISearchDisplayController с UICollectionViewController?

    Каковы мои возможности для внедрения системы виртуальных кредитов для Mac-приложения?

    Как определить высоту панели инструментов в UINavigationController?

    Xcode или встроенные защелки для неправильного корневого каталога для поиска файла .ios.js

    Репликация функций ScrollView в интерфейсе Passbook.app

    Распространение Xcode iOS создает архив успешно, но Архивы пустые – почему?

    Давайте будем гением компьютера.