2011-12-13 53 views
2

我在xcode 4中創建了單個視圖項目。我添加了一個導航欄項目對象。在那我添加了一個名爲「完成」的導航欄按鈕。所有使用他的Xcode拖放。到該按鈕接上一個很簡單的IBAction爲iPhone導航欄按鈕項(UIButtonBarItem)的錯誤

- (IBAction) newContactDoneBtn:(id)sender 
{ 
    NSLog(@"INSIDE newContactDoneBtn"); 
} 

在「發送的動作:」我連與此newContactDoneBtn IBAction爲完成按鈕。到現在爲止還挺好。如果我編譯並運行它可以正常工作,即我看到消息日誌。

現在這裏的踢球者,如果對那個完成按鈕,我附加一個模態故事板,即當用戶點擊那個完成按鈕,它將他們帶到另一個視圖控制器...我的自定義IBaction「newContactDoneBtn」永遠不會被調用,我看到新的屏幕。現在爲什麼會這樣?

一個簡單的例子,可視化所有這些將是iphone聯繫人應用程序中的「完成」按鈕。當你點擊添加一個新的聯繫人時,在那裏有完成按鈕,你在這些字段中輸入了一些內容並完成了,它會將你帶到另一個視圖控制器,並且它將新聯繫人添加到地址簿中。

這可能是UIBarButtonItem的限制,但任何人都可以告訴我,如果我錯過了什麼?

回答

1

將segue添加到按鈕可能會覆蓋您應用於該按鈕的任何操作。在設置了segue後,該操作是否仍然在界面生成器中連接?

爲什麼要讓這兩件事情發生?如果你的能夠同時發起一個動作和一個segue,他們應該執行什麼命令?

如果你只是想調用模態視圖控制器,那麼連接segue就可以做到這一點,而無需編寫任何代碼。您可以在視圖控制器的prepareForSegue:方法中運行所需的任何內容。或者,您可以從您的操作方法手動呈現模態控制器。

+0

謝謝。我必須在我的自定義按鈕IBAction中使用prepareForSegue:action。 –

+0

如果答案有幫助,請點擊空白複選標記將其標記爲已接受。這有助於他人知道您不再在這個問題上尋求幫助。 – jrturton

+0

我遇到了與Xcode 4.2和iOS 5.0完全相同的問題。我想做一些UI更新(點擊UIBarButtonItem時在我的IBAction中開始加載指示器動畫),所以我必須將IBAction與prepareForSegue中的代碼分開,否則似乎沒有機會在UI中顯示加載指示器。我期望在prepareForSegue之前執行IBAction,因爲prepareForSegue會過渡到另一個UI視圖控制器。但是,它根本不起作用,並且如果連接到按鈕上的時候,IBAction將不會執行。而在我看來,這是一個iOS錯誤。 – nybon