3

私のtabBarControllerベースのアプリケーションにはいくつかのタブがあります。それぞれにカスタムのviewControllerクラスがありますが、唯一の違いはインスタンスの初期化方法です。インターフェイスビルダーが別のタブのカスタムinitパラメータを送信させる方法はありますか?tabBarビューのIBのコントローラー:カスタムのinitを送信しますか?

現在、私はviewWillAppearで初期化を行っていますが、コードの代わりにIBで行うのは意味があります。

提案がありますか?

おかげで、 ケルソ

+0

異なるパラメータを送信するにはタブバーが必要ですか、カスタム初期化メソッドが必要ですか? – nduplessis

+0

私はココアタッチ、iphone-sdkタグを追加することをお勧めします。 –

答えて

3

プログラムの実行時にアーカイブされないオブジェクトのアーカイブがInterface Builderによって作成されます。あなたは実際にIBに特定のメソッドを呼び出すよう指示することはできません。

viewWillAppear:が呼び出される前に初期化する必要がある場合は、awakeFromNibで行うことができます。これは、すべてのオブジェクトがロードされ、すべてのアウトレットがターゲットに接続された後に呼び出されることが保証されます。

さらに初期化を行う場合は、initWithCoder:をオーバーライドして初期化を行うことができます(ドキュメントについてはNSCodingプロトコルを参照)。私はそれがどこに文書化されているかわからないが、それはアーカイブからデコードされているオブジェクトのために初期化された指定である。

上記のすべてでは、パラメータを受け取ることはできませんが、コードでは、必要なものにグローバル変数を賢明に使用してアクセスできる必要があります。 [[UIApplication sharedApplication] delegate]を使用して、アプリケーションデリゲートオブジェクトにアクセスすることもできます。

0

私はあなたのペン先がロードされたときの方法はIBランタイムによって呼び出される内容を変更するにはどのような方法はないと思います。達成しようとしていることが記述されている場合(つまり、なぜviewDidAppearで設定を行うのがうまくいかないのか)、初期化を処理するためのより良い方法を提案することがあります。

関連する問題