2011-02-27 39 views
0

我有一個非常簡單的viewController問題。Touchupinside和簡單的viewController問題

我有一個2按鈕的主視圖,一個按鈕的touchupinside我想加載一個新的視圖控制器(一個表視圖)。

我用它的nib文件創建了一個新的viewController。

創建這樣一個IBAction爲,我已經在IB鏈接按鈕:

- (IBAction)displayVin { 

    UIViewController *vinController = [[UIViewController alloc] initWithNibName:@"vinController" bundle:nil]; 
    [self.navigationController pushViewController:vinController animated:YES]; 
    [vinController release]; 

} 

它沒有做任何事情,因此我必須忘了什麼東西,但什麼?我應該在其他地方聲明這個newViewController嗎?它的編譯和執行沒有錯誤信息。

UPDATE:

現在,我使用這個:

- (IBAction)displayVin:(id)sender { 

    NSLog(@"here"); 
    UIViewController *vinController = [[UIViewController alloc] initWithNibName:@"vinController" bundle:nil]; 
    [self.navigationController pushViewController:vinController animated:YES]; 
    [vinController release]; 

} 

但它與此錯誤崩潰當我按下按鈕:

[displayVin]:無法識別的選擇發送到實例0x8d03000 * *由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:' - [displayVin]:無法識別的se發送給實例0x8d03000'*

我應該在其他地方聲明一些東西,或者「應該」那段代碼就夠了嗎?

回答

0

首先使用NSLog()來確定您是否確實在displayVin()例程中。按鈕事件向acion發送一個參數,所以你應該聲明它爲-(IBAction)displayVin:(id)sender而不僅僅是-(IBAction)displayVin

+0

我在displayVin方法中,它打印出來很好,謝謝你的提示。我添加了(id)sender,現在在頭文件和實現文件中使用 - (IBAction)displayVin:(id)sender,它現在崩潰了(我猜這是件好事,至少它正在註冊),登錄更新後的問題 – 2011-02-27 05:23:02

0

對於您更新的代碼,您可能必須重新連接IB文件中的IBOutlet。它看起來仍然在調用[viewController displayVin]方法(不帶參數),而不是[viewController displayVin:]

+0

不錯,不會崩潰了!謝謝 。它仍然正確地打印NSlog,確定沒有做任何其他事情,例如移動視圖,但至少它不會崩潰:) – 2011-02-27 12:38:12

+0

再次閱讀您的代碼後:檢查您是否真的使用navigationController。如果你沒有,self.navigationController將不會被設置,並且pushModalViewController將不會執行任何操作。假設IBAction方法在viewController中,用[self pushModalViewController:vinController animated:YES]替換該調用;應該工作... – 2011-02-27 21:45:31

+0

謝謝你,我已經取代只是「自我」而不是「self.navigationController」,但現在它抱怨如此:「警告:'VinsViewController'可能不會響應'-pushViewController:動畫:'」 – 2011-02-28 09:21:43