UITableViewController не может установить делегат - PullRequest
0 голосов
/ 21 января 2019

просто я добавил UITableViewController в свою раскадровку

и установил для его класса файл с именем CategoriesList: -

ScreenShot 1: - enter image description here

ScreenShot 2: - enter image description here

@interface CategoriesList : UITableViewController {

    NSArray *CategoryArray;


}

@end

но я продолжаю получать

*** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «- [CategoriesList setDelegate:]: нераспознанный селектор отправлен в экземпляр 0x7f9bfbd29370 '

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Найти решение

Проблема была:

в методе prepareForSegue в UIViewController, в котором есть кнопка для UITableViewController. Я устанавливаю делегатов для себя для другого контроллера представления без Укажите имя сегмента

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    AddMapAddress *MapAddress = [segue destinationViewController];
    MapAddress.delegate = self;
    MapAddress.AnnotationTitle = Name_Txt.text;

}

Решение:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([[segue identifier] isEqualToString:@"MapSegue"]) {
    AddMapAddress *MapAddress = [segue destinationViewController];
    MapAddress.delegate = self;
    MapAddress.AnnotationTitle = Name_Txt.text;
    }

}
0 голосов
/ 21 января 2019

При использовании UITableViewController вам не нужно указывать ни delegate, ни dataSource, потому что это уже сделано внутри. Другими словами, UITableViewController состоит в основном из обычного UIViewController с UITableView, в котором уже установлены delegate и dataSource для родительского контроллера. Об этом говорится в документации Apple:

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

Итак, просто удалите эти выходы для ссылок на delegate и dataSource, и все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...