2010-02-26 47 views
0

我試圖用推我的導航控制器上一個新的觀點:pushViewController crahses

-(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' 
+0

迄今爲止的答案正確地指出,推送視圖後應該完成發佈,但與錯誤消息無關。你如何設置呼叫switchPage?問題在那裏。 – willcodejavaforfood 2010-02-26 08:44:25

回答

1

你正在釋放一個你剛纔分配的對象是沒有意義的。你把它壓入堆棧

+0

我已經刪除了[myTableView版本]併發生了相同的錯誤。 – yesimarobot 2010-02-26 04:24:33

+0

任何人都可以提出一個很好的編程/非IB UINavigationController教程嗎? – yesimarobot 2010-02-26 04:25:28

+0

您可以嘗試添加斷點並查看您的navigationController是否爲空?你是否使用MyTableViewController的UITableViewController的子類? – 2010-02-26 05:59:17

2

呼叫釋放後推。

+0

爲簡潔起見,您還可以將bundle:[NSBundle mainBundle]更改爲bundle:nil,因爲將它設置爲nil默認爲使用主包。 – 2010-02-26 06:01:10

+0

我不是很熟悉switchPage(這是您的日誌中報告的錯誤),您是否在某處調用該方法,並忘記在ViewController中聲明該方法? – 2010-02-26 06:03:17

0

你確定你不需要交換最後兩行嗎?第一個推控制器,然後釋放它不是反之亦然... :)

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – Linger 2012-11-15 14:42:31

+0

抓住2.5年前發佈的東西的好工作:) – sha 2012-11-15 16:13:23

0

正如前面提到的後

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

發佈myTableView,你推入之前釋放視圖控制器。當您將其推到導航控制器上時,保留計數會增加,然後您可以將其釋放。

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

1

以上是正常的,當子視圖控制器已被推入資產淨值的堆棧,保留計數應該增加,那麼你應該在推送操作後釋放它。