tableview无法正常工作 - [UIViewController tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例

时间:2013-06-16 14:22:44

标签: ios objective-c xcode uitableview xib

我正在尝试使用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中添加 UITableViewDataSource viewController
  2. tableview 插入 viewController.xib 的视图中。
  3. 在其文件所有者中创建 datasource delegate (按下控制键并将鼠标的箭头从组件拖放到文件的所有者并选择选项委托,例如)。
  4. 在我的- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section中实施方法 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath viewController.m
  5. 以下两种方法的实现:

    - (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
    

3 个答案:

答案 0 :(得分:22)

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

答案 1 :(得分:0)

你有设置方法吗?:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

答案 2 :(得分:0)

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