0

いくつかのサブビューを持つカスタムビューコントローラーがあります。これらの各サブビューは、IBOutletプロパティを介してビューコントローラの.mファイルに接続されます。これらのサブビューには、そのサブビューがコンテンツを表示しているかどうかに応じて、他のサブビューのサイズを調整するカスタムセッターがあります。

現在、これらのカスタムセッターは、呼び出されるinitWithCoder:前に呼び出されてviewDidLoadいるようです。(私はこれが正常であることを願っています/仮定します。)

私の問題は、呼び出しself.viewがself.viewのサブビューのsetterメソッドにアクセスすることです。私の現在の理解では、これは必要ないはずです。誰かがここで何が起こっているのか説明できますか?にアクセスして何も設定するつもりはないので、これは起こらないほうがいいですself.view

コードは次のとおりです:https ://github.com/kenmhaggerty/Sandbox

4

1 に答える 1

0

ビュー コントローラーで self.view を呼び出すと、nib からビューが読み込まれます (まだ行っていない場合)。これにより、nib 内のすべてのオブジェクトがインスタンス化され (initWithCoder: を使用)、任意のアウトレットの値が設定されます (アクセサー メソッドを使用)。それから viewDidLoad を呼び出します。その時点までに nib 内のすべてが存在します。

アウトレット セッター メソッドは、レイアウトの調整を行うのに適切な場所ではない可能性があります。サブビューのサイズの変更に自動的に適応する制約ベースのレイアウトを使用するか、viewDidLayoutSubviews を使用するか、モデル情報をそれらのサブビューに渡すために使用しているメソッドを使用します。

于 2013-01-12T09:39:56.813 に答える