2016-02-20 31 views
0

我已經在界面生成器中規定的按鈕和連接它們作爲網點的UIBarButtonItem無法識別的選擇發送到實例

@IBOutlet weak var outletCatalogDetailsToolBarLink: UIBarButtonItem! 

viewDidLoad我有這樣的:

outletCatalogDetailsToolBarLink.target = self; 
outletCatalogDetailsToolBarLink.action = Selector("OwnHandleButtonClick"); 

該處理程序的定義如下:

func OwnHandleButtonClick(Sender: AnyObject) -> Void { 

但是,當按鈕被點擊時,我得到一個錯誤[R鏈開始:

無法識別的選擇發送到實例

所有的答案我在網上看到有在運行時創建的按鈕。雖然這當然是一個解決方案,但我想了解如何針對放置設計時間的控件編寫代碼。

+0

這是約5000現有堆棧溢出問題的重複。在請求之前請盡力搜索。 – matt

+0

@matt - 我找到的15個SO創建按鈕運行時,然後得到接受答案。 – Tom

回答

1

它改成這樣:

outletCatalogDetailsToolBarLink.action = Selector("OwnHandleButtonClick:") 

心靈的:

另外,Swift在每行的結尾不需要分號;

+0

它的工作。謝謝!我實際上遍歷了幾十個SO答案,試圖找出如何做到這一點,因爲它似乎最多隻是創建按鈕運行時。我仍然覺得這個概念有點令人困惑,爲什麼我不能直接通過其他機制分配方法,但使用字符串可以很好地處理我的項目規模。 – Tom

+1

@Tom你還沒有明白這個答案的意義。其意義在於作爲選擇器的'func OwnHandleButtonClick(Sender:AnyObject)'的名字是_not_'「OwnHandleButtonClick」',這就是你所擁有的。它是''OwnHandleButtonClick:「'冒號。這與按鈕的創建方式無關。 – matt

+0

@matt我可以找到提出UIBarButtonItem(.... action:Selector(「string」))和UIBarButtonItem(.... action:「string」)的多個SO(包括接受的)答案,其中字符串不包含「 :「而且這是真的,正如我在原Q中所說的那樣,答案不是我想要的。因爲丹尼爾特別強調了它,所以我*在丹尼爾答案中看到了「:」。所以是的,我嘗試添加冒號,並且正如我寫的那樣,它與冒號一起工作。但是,是的,你是正確的,丹尼爾除了展示如何解決這個問題 - 沒有創建按鈕的運行時也告訴我,我需要使用冒號。 – Tom

相關問題