1

我尝试根据 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 Handball [84675:40b]堆栈:(

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

4

1 回答 1

4

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

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

并且TableView应该是UITableViewController.

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

于 2010-01-06T19:07:03.057 回答