Недопустимые вызовы делегатов 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 } 

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

  • Использование моего собственного объекта Cell в XCODE
  • UITableView Interfering со строкой состояния
  • UITextField в пользовательском UITableViewCell не отображается
  • Как создать пользовательский горизонтальный вид таблицы?
  • Полноэкранный фон UISearchDisplayController перехватывает события касания в iOS 7
  • Пользовательский UITableViewCell дает мне: этот класс не является ключевым значением, совместимым с кодировкой
  • Использование Facebook Async Display Kit в Swift
  • Segue программно из пользовательского tableView внутри collectionView
  • NSFetchedResultsController и таблицы с использованием отношений
  • UITableview в UITableviewcontroller - cellforrowatindexpath не вызван при перезагрузке
  • Почему setEditing: анимированные: и insertRowsAtIndexPaths: приводит к этой странной анимации стиля редактирования?
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.