2011-03-30 24 views
0

我有一個視圖有一堆編程創建的UIButton對象(圓角矩形類型),但我需要在它們中存儲一點信息,識別每個按鈕。我對標籤做的很好,但是數字太大了,我想基本上有一個與每個按鈕相關的信息,這次是一個NSString。順便說一句,標籤被拿走了,我不能使用它。什麼是最簡單/最快捷的方法呢?我是否需要繼承UIButton並將其自己的屬性添加到它像stringTag?我還不是很精通obj-c,並且在某處閱讀這是一個痛苦。有沒有更簡單的方法來在我的UIButtons中存儲額外的字符串?提前感謝您提供任何建議。UIButton簡單的子類(需要有一個像標籤一樣的NSString屬性)

回答

1

繼承uibutton是一個真正的痛苦。由於UIButton是一個抽象類,它們通常不會像預期的那樣工作。因此,爲了創建一個完整的工作按鈕,您可能必須重寫相當多的方法才能使按鈕執行Apple子類所做的所有操作。相反,如果您只需添加存儲空間,則可以使用associative references。您必須使用#import <objc/runtime.h>才能使用這些功能。

要做到這一點,最好的方法是定義一個字符串常量NSString *const buttonTagName = @"com.youapp.buttonTag";並存儲標籤,將其作爲密鑰objc_setAssociatedObject(button, buttonTagName, tagForCurrentButton, OBJC_ASSOCIATION_RETAIN);

+0

有趣的是,謝謝,不知道這是可能的。看起來這可能是實現我想要的最簡單的方法。 – 2011-03-30 20:42:05

0

我認爲在某些id信息中添加NSString不應該讓您的UIButton子類變得太多。至少很容易嘗試,我們在這裏說10行代碼。我分類了一個UIButton和overrided initWithFrame方法一次,並得到它正常工作。但它是真的,這是一種痛苦,不要問我爲什麼我這樣做:)

+0

是啊,我從來沒有將uibutton分類過,我讀過一堆地方,這很難做。無論如何,我最終可能會這樣做,所以我可以繪製自定義按鈕。感謝您的回答 – 2011-03-30 20:43:05