pushViewController很棒

时间:2010-02-26 04:19:21

标签: iphone uinavigationcontroller pushviewcontroller

我正在尝试使用以下方法在我的导航控制器上推送新视图:

    -(IBAction)switchPage:(id)sender
{
 MyTableViewController *myTableView = [[CMyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
 [myTableView release];
 [self.navigationController pushViewController:myTableView animated:YES];
}

我遇到了以下错误:

2010-02-25 21:19:57.717 CoC[3399:20b] *** -[UIViewController switchPage:]: unrecognized selector sent to instance 0xf1a660
2010-02-25 21:19:57.718 CoC[3399:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIViewController switchPage:]: unrecognized selector sent to instance 0xf1a660'

6 个答案:

答案 0 :(得分:2)

推送后呼叫释放。

答案 1 :(得分:1)

你正在释放你刚刚分配的一个没有意义的对象。

 MyTableViewController *myTableView = [[CMyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
     [myTableView release];

将myTableView推入堆栈后释放它

答案 2 :(得分:1)

2010-02-25 21:19:57.717 CoC [3399:20b] * ** - [UIViewController switchPage:]:无法识别的选择器发送到实例0xf1a660

您的崩溃不是因为您提到的代码。但是你的代码中有一个bug,比如release和thenpush。将其更改为:

 -(IBAction)switchPage:(id)sender
{
 MyTableViewController *myTableView = [[CMyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
 [self.navigationController pushViewController:myTableView animated:YES];
 [myTableView release];
}

我想调用“switchPage:”方法的对象有一些问题。检查它或显示此方法的调用以获取任何帮助

此致 Manjunath

答案 3 :(得分:1)

上面没问题,当子视图控制器被推入导航堆栈时,应该增加保留计数,然后你应该在推送操作后释放它。

答案 4 :(得分:0)

你确定你不需要交换最后两行吗?首先按下控制器,然后释放它,反之亦然......:)

答案 5 :(得分:0)

如前所述,在推送之前释放视图控制器。当您将其推入导航控制器时,保留计数会增加,然后您可以将其释放。

-(IBAction)switchPage:(id)sender
{
     MyTableViewController *myTableView = [[MyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:myTableView animated:YES];
    [myTableView release];
}