2012-09-23 20 views
4

看起來,使文本行爲像iOS上的鏈接常見的方式是使其成爲一個UIButton,但我注意到UIButton的addTarget或gestureRecognizer的addTarget都沒有可以傳遞給該方法的參數,當按鈕被按下?在iOS上,如何製作一個動態的「鏈接」或按鈕列表調用帶有字符串參數的方法?

情況是,從服務器,我們可能會得到一個單詞列表,如「菠蘿」,「蘋果」,「橙色」,並且數字可能會有所不同。這些單詞顯示在屏幕上,按下該單詞將調用ViewController來替換主視圖控制器。

看來有一種方法是使用UIButton的標籤,所以當我們設置按鈕時,我們給它一個0的標籤,並在當前視圖或視圖控制器的另一個數組中,使元素0指向一個NSString對象,包含單詞「菠蘿」。所以在處理程序中,可以獲取標籤,並且可以使用它來檢索字符串。但這是唯一的方式,因爲它看起來不是很結構。有沒有更好的辦法?

+1

IMO,最清潔的方法是繼承UIButton來存儲你想要附加到按鈕的數據。 –

+0

所以如果UIKit沒有UITextLink類,那麼可以使用這種方法創建這樣的類? –

+1

但是你可以在action方法中獲得按鈕的currentTitle屬性,是不是你想要做的? – rdelmar

回答

1

我的下意識的答案是簡單地建議你將子類UIButton。無論何時您想將屬性添加到現有類中,「子類」都是首先想到的答案。但是當我嘗試繼承UIButton時,它運行得不好。搜索了 「UIButton的子類,」 我發現這是一個衆所周知的問題,與幾個推薦的解決方案:

我都試過創建category with associative references以及簡單的方法來代替UIView,並將所需的按鈕作爲子視圖。兩種方法都很好。但是,直接有吸引力​​的選擇只是繼承UIButton確實不是工作得很好。

儘管用於向UIButton對象添加屬性的各種解決方法都起作用,但它們看起來足夠不直觀,我傾向於回到簡單的東西,比如在數組或字典中使用tag數字,而比追求這些繁瑣的按鈕子類技術。

0

創建一個可變字典。要將一個單詞與一個按鈕相關聯,請將包含在nsnumber中的按鈕地址添加爲鍵,並將該單詞添加爲對象。當按鈕被按下併發送動作信息和'發件人'時,您可以從字典中檢索當前單詞。

相關問題