UIViewのカスタムサブクラスを作成しています。私は現在、Objective Cに基づいて初期化を行っています-カスタムビューとinitメソッドの実装?、コードからロードするかxibからロードするかに関係なく、初期化が行われるようにします。
私が今抱えている問題は、「必須」のプロパティを追加していることです(説明のためにreqPropと呼びましょう)-このプロパティが設定されていないとビューをレンダリングできず、に固有の他の機能の前に設定する必要があります私のビューサブクラスを使用できます。
このため、この要件を適用する自然な場所は、新しいinit関数を提供することであると考えました。したがって、コードの残りの部分全体で設定されていないことを心配する必要はありません。たとえば、
initWithFrame:(CGRect)frame forReqProp:(NSString *)reqProp;
ただし、initWithCoderを使用して初期化するときに、同じ要件を適用する方法がわかりません。
私が考えることができる最も近いのは、ユーザー定義のランタイム属性(インターフェイスビルダーでカスタムクラス名を定義する必要がある場所のすぐ下)でこのプロパティを指定することを要求することですが、その場合、いつ/「ブロー」する必要があるかは明確ではありませんプロパティが指定されていないため、「up」。
私が考えることができる他の唯一のオプションは、この必須のプロパティがビューを使用する前に最初に設定する必要があるという非常に明確なドキュメントを持っていることです。