Недопустимые вызовы делегатов UITableView и dataSource

У меня есть UIView, который содержит UITableView. Делегат tableview настроен на мой UIView, но он никогда не вызывает методы делегата:

-(id)init { self = [super init]; if (self) { self.tableView = [[UITableView alloc] initWithFrame:self.bounds]; self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth; self.tableView.dataSource = self; self.tableView.delegate = self; self.tableView.scrollEnabled = NO; self.tableView.layer.cornerRadius = PanelCornerRadius; [self addSubview:self.tableView]; } return self; } #pragma mark - UITableViewDelegate methods - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"height for row"); int height = [self heightForRowAtIndexPath:indexPath]; return height; } #pragma mark - UITableViewDataSource methods - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { NSLog(@"number of rows"); if (self.manager.fetchOperation.dataFetchProblem) { return 1; } int numberOfRows = [self.delegate numberOfSectionsInPanel:self]; return numberOfRows; } 

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

EDIT: Включено numberOfRowsInSection. Он потенциально может вернуть 0, только он никогда не получает такой шанс, потому что «количество строк» ​​NSLog никогда не будет вызвано.

7 Solutions collect form web for “Недопустимые вызовы делегатов UITableView и dataSource”

Не могли бы вы написать код, который вы написали на вашем методе cellForRowAtIndexPath:? Потому что я не могу найти что-то не так с вашим кодом.

Вы звоните в UIView из другого ViewController? Если да, то как?

Однажды я сделал что-то подобное. Я объявил метод в UIView следующим образом:

 - (void)setUpTableView{ self.tableview.delegate=self; self.tableview.dataSource=self; } 

И затем я вызвал setUpTableView с контроллера представления, я добавил этот вид, например:

 [self.yourView setUpTableView]; 

Это может помочь. Благодарю.

У меня была аналогичная проблема, мое решение состояло в том, что я не установил количество секций в 1.

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } 

Вы должны объявить свое представление следующим @interface MyView : UIView <UITableViewDelegate, UITableViewDataSource>

BTW: У меня был бы ViewController, который «контролирует» ваше представление и ваш табличный вид, а ViewController будет делегатом и источником данных в виде таблицы.

Вам не нужно использовать UIViewController, это всего лишь дымовая завеса. Вам также не нужно добавлять в .h, хотя вы все равно должны это делать, потому что Xcode будет жаловаться иначе, и вы не получите автоматическое завершение имени метода.

Я просто написал тестовый проект, в который встроен табличный вид в обычном UIView, и он отлично работает. Просто убедитесь, что ваш код инициализации вызывается. Готов поспорить, вам нужно переместить его в awakeFromNib.

Однажды я столкнулся с тем же вопросом, какую глупую ошибку я сделал внутри initWithCoder, которую я назвал [super init]. TableView был в xib

 -(id) initWithCoder:(NSCoder *)aDecoder { self = [super init] } 

Вместо

 -(id) initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; } 

Просто проверьте, не так ли это

Попробуйте изменить UIView на UIViewController и в viewDidLoad , вызовите

[[UITableView alloc] initWithFrame:style:] чтобы создать представление таблицы.

Задайте себя как делегат и источник данных, как вы делали выше, а затем добавьте этот UITableView в качестве Subview в этом контроллере.

попробуй это:

 override func numberOfSections(in tableView: UITableView) -> Int { return 1 } 

у меня тоже была эта глупая проблема

  • как к следующей деталиView, как в Mail-App
  • Авторезистировать ячейку xib для ширины ячейки таблицы и высоты строки
  • UISearchController для TableView
  • Tableview прокручивает отсутствие производительности с помощью cornerRadius, какие альтернативы?
  • Алгоритм изменения размера клавиатуры UITableView
  • UIButton не работает на пользовательском UITableViewCell (Swift)
  • Разрешить UITableView изменять порядок, но не удалять в режиме редактирования, а также удалять салфетки для удаления в любом случае
  • Логика раздела UITableView indexPath
  • Alloc - добавить в качестве аксессуарПросмотр: утечка?
  • Ошибка iOS: : индекс 1 за пределами границ
  • как я могу очистить состояние подтверждения удаления на UITableViewCell
  • Interesting Posts

    Пользовательский URL для импорта документов в iPad Excel

    Как добавить UIViewController в качестве цели действия UIButton, созданного в программно созданном UIView?

    Как правильно компенсировать MKMapRect

    Как обрезать аудио в ios

    Нужно ли загружать javascript на iOS * через * среду WebKit в дополнение к выполнению в рамках ее?

    Как создать и сохранить .rtf, .doc, .docx в Objective-C для iOS

    При попытке настроить Google Guard для iOS Project (в Swift)

    Не удается сохранить файл внутри каталога tmp

    Как обрабатывать аутентификацию пользователя в IOS?

    Использование 'stringWithString:' с литералом избыточно

    Не удалось получить данные с сервера SignalR в iOS

    Должен ли я по-прежнему регистрироваться для удаленных уведомлений, чтобы включить «Молчаливые уведомления» в моем приложении?

    Получение ошибок компилятора Swift

    iPhone: добавьте запись в / etc / hosts без джейлбрейка

    UIAutomation через командную строку на реальном устройстве

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