9

我正在尝试uitableview使用xib,但是当我在模拟器中运行应用程序时,会引发以下异常。

2013-06-16 10:40:48.552 CoreDataExample[60661:c07] -[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x81765a0
2013-06-16 10:40:48.554 CoreDataExample[60661:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x81765a0'

在我尝试启动 tableview 的步骤下面:

  1. 在我UITableViewDelegate的.UITableViewDataSourceviewController
  2. 将 插入tableview到我的视图中viewController.xib
  3. 创建datasourcedelegate在其中创建文件的所有者(例如,按下控制键并将鼠标箭头从组件拖动到文件所有者并选择选项委托)。
  4. 在我- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section的.- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathviewController.m

下面两种方法的实现:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    return 10;

}



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    UITableViewCell *cell = nil;

    static NSString *identifier = @"identifier";

    cell = [tableView dequeueReusableCellWithIdentifier:identifier];

    if(cell == nil){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
    }

    cell.textLabel.text = @"Olá";
    cell.detailTextLabel.text = @"Subtitle" ;
    [cell setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton];


    return cell;
}

ViewController.h 下面:

@interface CDEMainViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

@end
4

4 回答 4

22

在 XIB 中,单击文件所有者,检查类类型。我猜它是 UIViewController。如果是UIViewController更改为CDEMainViewController. 它会正常工作。

于 2013-06-16T14:50:57.513 回答
5

在您的 ViewController XIB 中,右键单击 Tableview,检查 tableview 数据源和委托可能与视图连接,而不是与文件所有者连接,断开这些连接并再次连接 tableview 数据源并委托与文件所有者,这解决了我的问题。请检查屏幕截图以供参考。

不正确的图像

在此处输入图像描述

正确的图像

在此处输入图像描述

于 2016-04-11T12:55:01.323 回答
0

你设置方法了吗?:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
于 2013-06-16T14:29:22.380 回答
0

尝试打开 xib 文件并重新连接 tableView 的 IBOutlet。希望对您有所帮助。

于 2013-06-16T14:39:43.640 回答