iPhone:“无法识别的选择器发送到实例”

Posted

技术标签:

【中文标题】iPhone:“无法识别的选择器发送到实例”【英文标题】:iPhone: "unrecognized selector sent to instance" 【发布时间】:2010-01-06 18:59:55 【问题描述】:

我尝试根据 SegmentSwitcher 的状态将两个不同的视图设置为子视图:

if ([sender selectedSegmentIndex] == gameIndex) 
    if (self.gameView.view == nil) 
        GameView *gameV = [[UIViewController alloc] initWithNibName:@"GameView" bundle:nil];
        self.gameView = gameV;
        [gameV release];
    
    [tableView.view removeFromSuperview];
    [subView insertSubview:gameView.view atIndex:0];
 else 
    if (self.tableView.view == nil) 
        TableView *tableV = [[UIViewController alloc] initWithNibName:@"TableView" bundle:nil];
        self.tableView = tableV;
        [tableV release];
    
    [tableView.view removeFromSuperview];
    [subView insertSubview:tableView.view atIndex:0];

TableView 扩展了 TableViewController,但是当我尝试切换到 tableview 时总是出现以下错误:

2010-01-06 19:55:00.871 Handball[84675:40b] * -[UIViewController tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例 0x3b18360 2010-01-06 19:55:00.873 Handball[84675:40b] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“***-[UIViewController tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例 0x3b18360' 2010-01-06 19:55:00.874 手球[84675:40b] 堆栈:(

任何帮助都会非常非常感谢......

【问题讨论】:

【参考方案1】:

虽然tableV 被声明为TableView,但它很可能使用简单的UIViewConrtoller 进行初始化,因为它出现在您的代码中。尝试将行更改为:

TableView *tableV = [[TableView alloc] initWithNibName:@"TableView" bundle:nil];

TableView 应该是UITableViewController 的子类型。

顺便说一句,GameView 也应该会发生同样的情况。

【讨论】:

有人能这么傻吗...?非常感谢,当然就是这样......你拯救了我的一天...... 哦,请说控制器而不是控制器,它可以节省很多错误=D

以上是关于iPhone:“无法识别的选择器发送到实例”的主要内容,如果未能解决你的问题,请参考以下文章

iphone os 5 - 无法识别的选择器发送到实例

iPhone 应用程序崩溃 [__NSCFString objectForKey:] 无法识别的选择器发送到实例

无法识别的选择器发送到实例(使用 UIBarButtonItem)

链接静态库时将无法识别的选择器发送到实例?

如何解决 [__NSCFString _isResizable] 的运行时错误:无法识别的选择器发送到实例?

UITableViewController 无法识别的选择器发送到实例