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

时间:2010-01-06 18:59:56

标签: iphone uitableview subview

根据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手球[84675:40b] * - [UIViewController tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例0x3b18360 2010-01-06 19:55:00.873手球[84675:40b] * 由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'*** - [UIViewController tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例0x3b18360' 2010-01-06 19:55:00.874手球[84675:40b]筹码:(

任何帮助都真的很棒,真的很感激......

1 个答案:

答案 0 :(得分:4)

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

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

TableView应该是UITableViewController的子类型。

顺便说一句,GameView也可能发生同样的情况。