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) это сработает … Эта проверка должна быть на месте, так как вы заставляете ее работать при использовании разных стилей?

5 Solutions collect form web for “UITableViewCell initWithStyle: UITableViewCellStyleSubtitle не работает”

При использовании раскадровки и ячеек прототипа ячейка всегда возвращается из метода 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]; cell.detailTextLabel.text=@"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]; } 
  • UILabel в UITableViewCell с динамической высотой
  • Простой UITableView в Swift - неожиданно найденный nil
  • UITableView пространство между строками и разделами
  • Загружать аудио в ДОКУМЕНТЫ при нажатии кнопки «UITableView»
  • Swift - UITableViewCell класс contentView программные ограничения не имеют ширины
  • UITableView ContentSize при использовании динамической высоты на UITableViewCells
  • определять URL-адреса в UILabel
  • Перезапустить вид таблицы, но не перемещать iOS
  • Вставка содержимого таблицыView в UITabBarController
  • iOS: Как создать пользовательский заголовок для таблицы?
  • Удаление UITableViewCell из UITableView
  • Interesting Posts

    Скрыть панель поиска UITableView по умолчанию, когда в контроллере навигации

    UITapGestureRecognizer не работает для определенного массива

    2017 Отвечать на "Как сделать фоновое изображение исправлено на iPhone6"

    Создание представлений программно Сильные Vs Слабые подзоны в контроллере

    Приложение iOS компилируется, но XCode 8.1 beta дает сообщение об ошибке «Модуль» HockeySDK «не найден»

    viewDidLoad в iOS 6 называется один раз?

    Экспорт в Xcode отсутствует в Delphi XE2

    Как изменить размер шрифта кнопки UIAlertAction

    Как читать слова с удостоверения личности с помощью Tesseract OCR.?

    Преобразовать координаты MKnnotation для просмотра координат

    Низкое качество изображения не похоже на отображение в фотоальбоме

    Как добавить бесплатную подписку на приложение NewsStand

    Удаление новой версии приложения из iTunes Connect

    Не удалось найти спецификацию для «Firebase»

    UICollection View Отрегулируйте размер ячейки для размера экрана

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.