UITableView:连接表视图到数据源后出错

时间:2013-03-22 08:18:05

标签: iphone ios objective-c xcode

我正在尝试在当前项目中创建一个简单的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

有人可以帮我弄清楚这个错误出现的原因吗?

屏幕截图在这里。 enter image description here

enter image description here

编辑: enter image description here

3 个答案:

答案 0 :(得分:3)

确保,

1.TableView与XIB中的FileOwner连接。

2. @ interface Controller:UIViewController UITableViewDelegate,包含UITableViewDataSource。

3。Delegate&amp; DataSource都与FileOwner连接。

4. numberOfSections返回1.

5. numberOfRowsInSection返回[required]。

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

编辑:

创建, @property(非原子,强)IBOutlet UITabelView * tableView;

并使用Fileowner将此Outlet连接到Xib

答案 1 :(得分: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];
}

答案 2 :(得分:0)

您应该将( dataSource和委托)从Outlets链接到视图控制器不要查看!喜欢这些图片:

enter image description here

enter image description here

enter image description here