インターフェイスビルダー。 Programmatic View ControllerをIB ViewControllerに置き換えるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1601835

質問

XCodeからIBにUIの構成をますます移動するにつれて、クリアする必要があるハードルが1つ残っています。

現在、XCodeでカスタム初期化子を使用してカスタムviewControllerを作成しています。通常、初期化中に渡されたパラメーターを介して設定される多数のivarがあります。できる限りIBに移行したいと思います。

誰かが私に慎重に説明することができますか、またはより良いことに、コードを指してください-IBのカスタム初期化子を介して、おそらくIBOutletを介してパラメータを渡すXCodeアプローチを複製する方法。

事前に感謝します。

乾杯、 ダグ

更新:

典型的なシーンリオは、私のAppDelegateがネットワークに出て、データ(NSMutableData)を取得し、ナビゲーションコントローラのviewControllerスタックにプッシュされるルートviewController(通常はTableViewController)への参照を渡します。

セルが選択されると、secondViewControllerが割り当て/初期化され、データのサブセットがセルに渡されます。 secondViewControllerはもう少しデータを取得するためにネットワークにアクセスし、ビュー階層を構築し、取得したデータのビットを各サブビューに渡し、各サブビューにデータを処理するためにsetNeedsDisplayでメッセージを送ります。

IBに引き渡したいのは、この階層データの受け渡しです。

役に立ちましたか?

解決

カスタム初期化子を引き続き使用できます。ただし、この初期化された内部では、-[initWithNibName:@" yourNibName"を呼び出します。 bundle:bundle] 。 Interface Builderで UIKit 関連のインスタンス変数( UILabel UIButton など)を接続するため、これらのオブジェクトをインスタンス化する必要はありません。イニシャライザで。その他のインスタンス変数(文字列、辞書、カスタムオブジェクトなど)をインスタンス化し、イニシャライザーで設定します。

また、ラベルテキストの設定や UIView の位置の設定など、 UIKit 関連の変数の操作は、 > viewDidLoad メソッド。これらのオブジェクトは、初期化子の実行時に完全には作成されていない可能性があるためです。

詳細情報が必要かどうか教えてください。

他のヒント

UIViewControllerを拡張するMyViewControllerと、初期化時にMyViewControllerに渡すカスタムオブジェクトの1つであるMyViewControllerParameterがあるとします。 MyViewControllerには、タイプMyViewControllerParameterのIBOutletsが定義されています。 MyViewControllerを別のビューを含むParentView.xibに配置します。 ParentView.xibはParentViewController.mによって所有され、他の場所で作成されます。 XCodeでParentView.xibをダブルクリックして、Interface Builderを起動します。次に、「オブジェクト」をドラッグします。ライブラリビュー(デフォルトで開かない場合は、Cmd + Shift + Lでライブラリビューを開くと思います)からドキュメントウィンドウに移動します。 (これはCmd + 0によってアクティブにされるウィンドウです。)

"オブジェクト"ライブラリ内にある任意のウィジェット(金色の立方体アイコンで識別)は、プロジェクト内のあらゆるものを表すことができます。新しいオブジェクトをドキュメントウィンドウに配置した後、Cmd + 4と入力してIndentity Inspectorウィンドウを開きます。上部のテキストフィールドに、View Controllerパラメータの名前「" MyViewControllerParameter"」を入力できます。次に、ライブラリでViewControllerウィジェットを見つけて、ドキュメントウィンドウにドロップします。属性インスペクター(Cmd + 1)を開き、nib名を「MyView.xib」に設定します。これにより、CocoaTouchは" MyView.xib"の定義を使用してMyViewControllerをロードします。

IDインスペクターを開き、クラス属性をMyViewControllerに設定します。最後に、ドキュメントウィンドウで右クリックまたはコントロールクリック(または、MacbookProでトラックパッドを正しく構成した場合は2本指タップ)MyViewControllerを選択します。 MyViewControllerのすべてのIBOutletsを表示するウィンドウが開きます。 MyViewControllerParameterアウトレットの横にある小さな白丸から線をドラッグし、ドキュメントウィンドウにあるMyViewControllerParameterオブジェクトにドロップします。これらのドットを接続することで、インターフェイスビルダーを使用してオブジェクト間にパラメーターを設定します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top