簡體   English   中英

如何將元數據附加到視圖?

[英]How to attach metadata to a view?

有什么辦法可以將某些數據(例如NSString)附加到UIView? (類似[view setMetadata:@"username"] )。

讓我解釋一下我需要實現的目標。 我以編程方式創建了一些UIButton,可以在觸摸時顯示用戶的個人資料。 他們都會在觸摸時觸發一個方法,但是當該方法被調用時,我需要知道該訪問哪個用戶。 作為一種解決方法,我可以使用NSDictionary,其中的鍵是數字,並設置視圖標記以匹配這些數字,但是我想知道是否有更好的方法可以做到這一點。

您可以將標簽添加到視圖。 標簽只是一個數字,因此您將無法將其用於字符串。 您可能有一個NSDictionary,其中包含了用作標簽的數字的字符串數據鍵。

如果我更仔細地閱讀了您的問題,我建議您UIButton而不是UIView 無論如何,其原理是相同的:子類,然后添加所需的屬性,並在必要時(例如在action:方法中)添加到子類並檢索數據。

由於我們已經在討論子類化,因此您實際上可以從示例中添加setMetadata:方法,並使用它存儲idNSDictionary或類似的東西。

為了完整起見,還有另一種方法。 您可以使用類別和objc_setAssociatedObject函數將屬性添加到類。 例如,參見本教程

我個人更喜歡斯蒂芬·約翰遜的解決方案

給出的建議是完成所需目標的好方法,但請記住一件事:在iOS中,您通常遵循MVC設計模式 在MVC中,視圖通常是“啞”對象,它們僅負責顯示您提供給它們的任何信息*。

因此,您可能需要重新設計解決方案,以使信息不是由視圖保存,而是由知道您的視圖和模型的控制器保存。 有時看起來確實是不必要的步驟,但是隨着應用程序的擴大,分離的充分理由將越來越明顯。

*請注意,該規則的例外是從用戶那里獲取信息的輸入視圖,但即使在這種情況下,控制器也會在這些視圖中查詢其信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM