0

我正在尝试在我当前的项目中创建一个简单的 TableView。但是在 IB 中连接数据源并运行 iOS 模拟器后出现此错误。

2013-03-22 14:58:32.372 M[1875:c07] -[ViewController tableView:numberOfRowsInSection:]:      
unrecognized selector sent to instance 0x88191f0
2013-03-22 14:58:32.374 M[1875:c07] *** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '-[ViewController tableView:numberOfRowsInSection:]:        
unrecognized selector sent to instance 0x88191f0'

,但是当我在一个空项目中使用相同的代码创建一个简单的 TableView 时,它正在工作。

这是我的代码“MCEventActivityViewController.h”

#import <UIKit/UIKit.h>

@interface MCEventActivityViewController : UIViewController <UITableViewDelegate,   UITableViewDataSource>

@end

“MCEventActivityViewController.m”

#import "MCEventActivityViewController.h"

@interface MCEventActivityViewController ()

@end

@implementation MCEventActivityViewController
{
    NSArray *tableData;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    tableData = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [tableData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"SimpleTableItem";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

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

cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
return cell;
}

@end

谁能帮我弄清楚为什么会出现这个错误?

屏幕截图在这里。 在此处输入图像描述

在此处输入图像描述

编辑: 在此处输入图像描述

4

3 回答 3

3

确保,

1.TableView与XIB中的FileOwner连接。

2.@interface Controller : UIViewController UITableViewDelegate,UITableViewDataSource 包括在内。

3. Delegate&DataSource都与 FileOwner 连接。

4.numberOfSections返回 1。

5.numberOfRowsInSection退货【必填】。

6. cellForRowAtIndexPath {数据在这里...}

编辑:

创建,@property (nonatomic,strong) IBOutlet UITabelView * tableView;

并将 Xib 中的这个 Outlet 与 Fileowner 连接

于 2013-03-22T08:43:46.027 回答
0

numberOfSectionsInTableView方法添加到您的代码中

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

添加NSArray *tableData;MCEventActivityViewController.h

@property并正确设置它@synthesize

和写

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    self.tableData = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", nil];
}
于 2013-03-22T08:26:05.313 回答
0

您应该将(数据源和委托)从 Outlets 链接到视图控制器而不是查看!像这些图片:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

于 2014-12-30T03:35:17.000 回答