我有一個視圖有一堆編程創建的UIButton對象(圓角矩形類型),但我需要在它們中存儲一點信息,識別每個按鈕。我對標籤做的很好,但是數字太大了,我想基本上有一個與每個按鈕相關的信息,這次是一個NSString。順便說一句,標籤被拿走了,我不能使用它。什麼是最簡單/最快捷的方法呢?我是否需要繼承UIButton並將其自己的屬性添加到它像stringTag?我還不是很精通obj-c,並且在某處閱讀這是一個痛苦。有沒有更簡單的方法來在我的UIButtons中存儲額外的字符串?提前感謝您提供任何建議。UIButton簡單的子類(需要有一個像標籤一樣的NSString屬性)
回答
繼承uibutton是一個真正的痛苦。由於UIButton是一個抽象類,它們通常不會像預期的那樣工作。因此,爲了創建一個完整的工作按鈕,您可能必須重寫相當多的方法才能使按鈕執行Apple子類所做的所有操作。相反,如果您只需添加存儲空間,則可以使用associative references。您必須使用#import <objc/runtime.h>
才能使用這些功能。
要做到這一點,最好的方法是定義一個字符串常量NSString *const buttonTagName = @"com.youapp.buttonTag";
並存儲標籤,將其作爲密鑰objc_setAssociatedObject(button, buttonTagName, tagForCurrentButton, OBJC_ASSOCIATION_RETAIN);
。
我認爲在某些id信息中添加NSString
不應該讓您的UIButton
子類變得太多。至少很容易嘗試,我們在這裏說10行代碼。我分類了一個UIButton和overrided initWithFrame方法一次,並得到它正常工作。但它是真的,這是一種痛苦,不要問我爲什麼我這樣做:)
是啊,我從來沒有將uibutton分類過,我讀過一堆地方,這很難做。無論如何,我最終可能會這樣做,所以我可以繪製自定義按鈕。感謝您的回答 – 2011-03-30 20:43:05
- 1. UIbutton標籤屬性
- 2. XSL不必要的下一個元素 - 讀取標籤和子標籤屬性
- 3. 簡單的C++標籤庫需要
- 4. 需要一個值屬性
- 5. 像Java一樣簡單的屬性文件?
- 6. 的NSString需要子
- 7. 需要一個簡短明確的「依賴屬性」的定義
- 8. 需要一個包含單位的類型的簡單示例
- 9. 需要一個(簡單)的SQLite聲明
- 10. as3需要一個簡單的解釋
- 11. 需要做一個簡單的查詢
- 12. 需要一個簡單的linq
- 13. 需要一個簡單的查詢
- 14. 獲得在一個UIButton與標籤屬性IPhone
- 15. 輸入隱藏標籤沒有屬性「需要」(浮動標籤)
- 16. UIButton子類 - 設置屬性?
- 17. iOS中的UIButton的簡單子類化
- 18. 聲明樣式。指定一個屬性是絕對需要的
- 19. 我需要asp.net的路由一個簡單的例子
- 20. 簡單的CSS標籤 - 需要打破邊界活動標籤
- 21. 爲什麼一個類需要數據合同屬性,另一個不需要
- 22. VB.NET需要一個類屬性是一個列表陣列
- 23. 需要一個簡單的工具來繪製箭頭和標籤
- 24. 子類簡單的UIButton複選框
- 25. 最好有一個布爾(重要標誌)像一個屬性或在一個單獨的表?
- 26. 發現如果一個類中的所有屬性都一樣
- 27. 項標籤需要「繪製」屬性
- 28. ifelse&for循環R-幫助需要一個簡單的例子
- 29. RavenDB - 需要一個簡單的例子使用EmbeddableDocumentStore?
- 30. 需要一個簡單的例子來實現同步
有趣的是,謝謝,不知道這是可能的。看起來這可能是實現我想要的最簡單的方法。 – 2011-03-30 20:42:05