[tableView:numberOfRowsInSection:]:发送到实例的无法识别的选择器

use*_*185 -2 iphone objective-c uitableview ios

所以我有一个带有表视图的UIViewController.我做了这个没有故事板.

在这个viewController中我有一个HTTPResponse方法,我创建tableview并为其分配委托和数据源.

 - (void)APIDownload:(APIDownload*)request {

CJSONDeserializer *deserializer = [CJSONDeserializer deserializer];
NSError *error = nil;
NSDictionary *data = [deserializer deserializeAsDictionary :request.downloadData error:&error];

if (error) {
    [[iToast makeText:@"serious error"] show];
} else {
    if (data && data[@"status"] && [data[@"status"] isEqual:@"ok"]) {
        self.categoriesArray = data[@"data"];

        self.rootTable = [[UITableView alloc] initWithFrame:self.slideContainer.frame
                                                              style:UITableViewStylePlain];
        self.rootTable.delegate = self;
        self.rootTable.dataSource = self.categoriesArray;

        [self.slideContainer addSubview:self.rootTable];

        [self.rootTable reloadData];
        [self.rootTable setHidden:NO];

    } else {
        [[iToast makeText:[NSString stringWithFormat:@"%@", data[@"data"][@"message"]]] show];
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我已经为uitableviewdelegate和uitableviewdatasource实现了所有四种必要的方法,但仍然得到了

 2015-07-27 12:57:29.073 xxx[10663:602881] -[__NSCFArray tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7f9e10490ae0
 2015-07-27 12:57:29.077 xxx[10663:602881] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7f9e10490ae0'
Run Code Online (Sandbox Code Playgroud)

Gre*_*reg 5

你得到的问题是这一行:

self.rootTable.dataSource = self.categoriesArray;
Run Code Online (Sandbox Code Playgroud)

您将表数据源设置为数组.我相信你想把它设置为自我:

self.rootTable.dataSource = self;
Run Code Online (Sandbox Code Playgroud)

只需记住在视图控制器中实现数据源方法.