2011-04-11 48 views
1

是否可以爲UIBarButtonItem註冊2個動作?爲UIBarButtonItem設置2個動作

具體來說,我指的是ABPersonViewController中存在的「取消」UIBarButtonItem。這個按鈕有一個默認動作,我不想改變,但是我想爲按下這個按鈕時添加一個新動作。

任何想法如何做到這一點?

謝謝!

回答

1

我刪除了我以前的答案,因爲我誤解了這個問題。不知道這個應用程序是否需要得到Apple b/c的批准才能確定您可以通過「合法」的方式獲得取消按鈕的指針,但我會假設您可以在按鈕上進行操作。

當您第一次出現人物視圖控制器時,您可以從targetaction屬性中獲取它的默認目標和動作並保存它們。然後將它們設置爲自定義targetaction。當您的自定義操作被調用時,將默認操作發送到默認目標,然後執行您的自定義操作。

這是我擁有的最好主意,希望它有效!

+0

XJones,不是真的。我創建了我自己開發的CustomABPersonViewController類。您可能指的是ABNewPersonViewController,它只添加了一個新人。對於ABPersonViewController,「取消」按鈕僅將視圖恢復爲其正常/原始形式。除了爲按鈕添加2個動作之外,我沒有看到任何其他解決方案。我曾嘗試將一個動作附加到按鈕上,但這會忽略默認動作。 – Andrei 2011-04-11 16:59:57

+0

對不起,我誤解了。我修改了我的答案,希望它有幫助。 – XJones 2011-04-11 17:55:24

0

假設您可以獲得對按鈕的引用,您應該可以調用addTarget:action:forControlEvents:添加另一個操作。

我意外地發現,當我根據UI的狀態(我認爲)替換按鈕上的操作時,您可以將它做到UIButton,但我實際上是在向按鈕添加操作。這是當我瞭解到removeTarget:action:forControlEvents:。 :-)

就這麼說,如果你有一個按鈕說「取消」,並且你用超出用戶可見範圍的東西來重載它,這可能會讓用戶感到困惑。如果你只是想在用戶點擊取消時在後臺發生某些事情,那麼這是一個有趣的方式來完成它!我喜歡。

+0

感謝Mark的迴應。但是,沒有addTarget:action:forControlEvents:用於UIBarButtonItem。 – Andrei 2011-04-11 17:28:31

+0

確實。但是有個別的'setTarget:'和'setAction:'方法。這讓我懷疑'UIBarButtonItems'是否支持像'UIButton'這樣的多種動作......試一試,讓我們知道。 – 2011-04-11 17:31:24

+0

已經嘗試過標記。 UIBarButtonItems僅支持1個目標和操作。如果您「設置」了操作,它將覆蓋之前的任何內容(例如,來自ABPersonViewController的默認操作)。我認爲可能有一種方法可以與觀察員一起解決這個問題,但目前爲止我沒有任何運氣。 – Andrei 2011-04-11 17:35:20