我正在創建UIView的自定義子類。我目前正在基於Objective C - Custom view and implementing init method?進行初始化,因此無論是從代碼加載還是從xib加載,都會進行一些初始化。如何通過xib指定自定義視圖初始化所需的屬性?
現在的問題是,我添加了一個'必需'的屬性(爲了討論的緣故,我們稱之爲reqProp) - 如果沒有設置此屬性,視圖將無法呈現,並且必須在任何可以使用特定於我的視圖子類的其他功能。由於這個原因,我認爲執行這個要求的自然地點是提供一個新的init函數,所以我不必擔心它不會被設置在我的代碼的其餘部分 - 例如
initWithFrame:(CGRect)frame forReqProp:(NSString *)reqProp;
但是,我不確定如何通過initWithCoder初始化時執行相同的要求。
我能想到的最接近的情況是需要在用戶定義的運行時屬性中指定此屬性(在需要在界面生成器中定義自定義類名稱的地方),但在這種情況下,它不清楚何時/如果由於沒有指定財產,我應該「炸燬」。
我能想到的唯一的其他選項是非常明確的文檔,這個必需屬性必須是在使用視圖之前設置的第一件事。
只有合理的默認纔會浮現在腦海。 – Eimantas 2012-07-30 22:39:24
我不能爲這個特定的屬性默認任何東西 - 它必須由開發人員使用這個視圖指定。換句話說 - 我挑選的任何默認值都是錯誤的,使用視圖的開發人員在使用視圖之前需要對其進行更改。 – Krease 2012-07-30 23:48:00