TableView的内容不会出现“tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例”

时间:2014-07-07 09:31:08

标签: iphone xcode uitableview storyboard

我看过类似的线程并阅读它们但我仍然无法使其工作。因此我决定在这里发布我的代码,以防有人可以帮助我。我试图在ViewController中创建一个tableview。我正在使用Xcode 4.5和故事板。

prodViewController.h

    #import <UIKit/UIKit.h>

    @interface prodViewController : UIViewController <UITableViewDelegate , UITableViewDataSource>

@property (strong, nonatomic) IBOutlet UIView *prodview;

// properties of ui

@property (strong, nonatomic) IBOutlet UIImageView *image;

@property (strong, nonatomic) IBOutlet UILabel *namelbl;

@property (strong, nonatomic) IBOutlet UILabel *manufactlbl;

@property (strong, nonatomic) IBOutlet UILabel *scorelbl;

@property (strong, nonatomic) IBOutlet UILabel *dscrlbl;

@property (strong, nonatomic) IBOutlet UILabel *videolbl;

// properties of tab bar

@property (strong, nonatomic) IBOutlet UITabBarItem *addfav;

@property (strong, nonatomic) IBOutlet UITabBarItem *compare;
@property (strong, nonatomic) IBOutlet UITabBarItem *more;


// table

@property (strong, nonatomic) IBOutlet UITableView *tableview;

@end

prodViewController.m

        #import "prodViewController.h"

        @interface prodViewController ()

        @end

        @implementation prodViewController
  @synthesize tableview;
@synthesize prodview;


@synthesize addfav;
@synthesize compare;
@synthesize more;


@synthesize image;
@synthesize namelbl;
@synthesize manufactlbl;
@synthesize scorelbl;
@synthesize dscrlbl;
@synthesize videolbl;





- (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.
    [tableview setDataSource:self];
    [tableview setDelegate:self];

}

- (void)viewDidUnload
{


    [self setAddfav:nil];
    [self setCompare:nil];
    [self setMore:nil];

    [self setProdview:nil];
    [self setTableview:nil];
      [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}



        @end

TableView连接:

enter image description here

错误:

[prodViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x683a5b0
2*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[prodViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x683a5b0'

新错误:

如果我删除已实现的表方法,以便故事板实现只有效,我仍然会收到此错误:

-[prodViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x6c34c80

2 个答案:

答案 0 :(得分:3)

方法名称区分大小写。第一部分必须是tableView:...V是大写字母),但您全部都是小写的:tableview:...

答案 1 :(得分:1)

你应该摆脱接口文件中的方法声明。

协议是定义UITableViewDatasourceUITableViewDelegate

所需的全部内容

您是否从项目的某个位置手动调用这些方法?方法tableView:numberOfRowsInSection:只能由tableview调用。你不应该自己打电话。

修改

此外,您不需要在viewDidLoad中设置数据源和委托,您已经在InterfaceBuilder中进行了此操作。

好像你在这里遵循一个非常古老的教程。我建议您查看更新的教程。

Ray Wenderlich's site始终是个好地方。