62
задан 13 December 2015 в 15:24

16 ответов

Ваша ошибка предполагает, что cellForRowAtIndexPath возвращается nil по некоторым причинам, и я предполагаю, что это - потому что Вам не удается исключить допускающую повторное использование ячейку из очереди. Если Вы хотите подтвердить это, просто установите точку останова после своего текущего вызова двухсторонней очереди: Я ожидаю, что Вы найдете cell, установлен на nil.

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

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

, Если Вы не используете шаблон Xcode, используйте ту строку кода, так или иначе затем регистрируют Ваш собственный идентификатор повторного использования как это:

[self.tableView registerClass:[UITableViewCell self] forCellReuseIdentifier:@"Cell"];

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

76
ответ дан 31 October 2019 в 13:01

Проверьте, добавили ли, что UITableViewDataSource были добавлены. Я пропустил это, так, чтобы приложение отказывало

1
ответ дан 31 October 2019 в 13:01

Необходимо переопределить 'cellForRowAt' метод. Всего хорошего, если Вы не сделали этого

0
ответ дан 31 October 2019 в 13:01

Осторожный, когда Вы мигрируете
В случае, если любой перемещает их код от более старых быстрых версий до более новых, это может произойти, если Вы неумышленно не изменяетесь UITableViewDataSource синтаксис функций на более новый быстрый синтаксис.
, К сожалению, компилятор не будет жаловаться на это.
я столкнулся с этим, когда я перемещал свой код от быстрых 2 до быстрых 4. Я не изменил синтаксис cellForRow DataSource метода от:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell   

к его быстрым 4 версиям:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell  

и я получил ошибку:

"Failed to obtain a cell from its DataSource"
1
ответ дан 31 October 2019 в 13:01

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

2
ответ дан 31 October 2019 в 13:01

Удостоверьтесь, что Вы не забыли реализовывать Протоколы UITableViewDelegate и UITableViewDataSource.

class ExampleViewController: UIViewController, UITableViewDelegate, UITableViewDataSource

1
ответ дан 31 October 2019 в 13:01

В моем случае я был, забыл объявлять UITableViewDataSource, UITableViewDelegate для UITableview.

2
ответ дан 31 October 2019 в 13:01

У меня была та же проблема, и это было, потому что я забыл реализовывать протоколы UITableViewDataSource и UITableViewDelegate

, просто добавляют их к Вашему объявлению класса после наследованного класса

, XCode должен предупредить меня об этом, потому что я использовал методы UITableViewDataSource и UITableViewDelegate в своем коде

2
ответ дан 31 October 2019 в 13:01

Необходимо дать ячейке идентификатор. "Ячейка" дает идентификатору ячейки как в инспекторе атрибутов ячейки в поле идентификатора. Я воспроизвел Вашу ошибку, и это происходит из-за Вас, не дали идентификатор Вашей ячейке.

3
ответ дан 31 October 2019 в 13:01

Быстро 3.0

просто необходимо добавить UITableViewDelegate и , UITableViewDataSource

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource

Ниже изображения только для ссылки.

enter image description here

43
ответ дан 31 October 2019 в 13:01

Используя Быстрые 3 я встретился с этой ошибкой, когда я забыл добавлять протоколы UITableViewDataSource и UITableViewDelegate к объявлению ViewController.

класс DataViewController: UIViewController, UITableViewDataSource, UITableViewDelegate

, Добавляющий их, решил проблему.

148
ответ дан 31 October 2019 в 13:01

Также попробуйте ниже кода

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
 {
    static NSString *CellIdentifier = @"Cell";
    // Reuse and create cell    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    // Update cell data contents
    cell.textLabel.text = @"Your text here";
    cell.detailTextLabel.text=@"Your detailed text label";

    return cell;
}
1
ответ дан 31 October 2019 в 13:01

При использовании tableViewCell кроме UITableView необходимо зарегистрировать NIB сами. То, когда NIB не регистрируется "Неудавшийся для получения ячейки из ее DataSource" ошибка, может произойти. Из описания ошибки мне всегда трудно выяснить, что не так.

Эта ошибка может легко быть решена путем регистрации:

 [self registerNib:[customerButtonTableViewCell class]
     forCellReuseIdentifier:customerButtonCellIdentifier forTableView:tableView];
0
ответ дан 31 October 2019 в 13:01

Сделав шаги, предложенные в других сообщениях, и проверяющий, была ли моя ячейка нолем, это, моя проблема не была разрешена, и моя ячейка была не показывание нолем, когда я проверил его. Однако добавление этого удобного фрагмента кода там решало вопрос, таким образом, это, должно быть, был ноль в какой-то момент, где я не ловил его.

if (cell == nil)
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ClassNameOfMyCustomCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
}
0
ответ дан 31 October 2019 в 13:01

Если Вы не загружаете Nib затем, необходимо сначала зарегистрировать Nib в viewDidLoad.

 [self.tableView registerNib:[UINib nibWithNibName:@"RecruitmentDetailViewC" bundle:nil] forCellReuseIdentifier:@"RecruitmentDetailViewC"];
0
ответ дан 31 October 2019 в 13:01

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

Удачи:)

0
ответ дан 31 October 2019 в 13:01

Другие вопросы по тегам:

Похожие вопросы: