View Controller変数の初期化?

これは私にとっては素朴な質問ですが、私はView Controllerにいくつかの変数を用意しています。つまり、これがカスタムクラスであれば、通常はinitメソッドまたはカスタムinitWithメソッドで初期化して値を与えます。

上記から得られるさらなる質問は次のとおりです。

View Controllerのinitメソッドはどこにありますか。また、View Controllerは基本的にクラスであり、ある場所ではalloc-initでなければならないためです。 View Controllerのインスタンスはどこに作成されますか?

どうもありがとう、

パリジャット・カリア

1

1 答え

適切な場所で変数を初期化することは、View Controllerにとって非常に重要です。あなたはそうすることができる4つの場所があります:

1)initWithNibName:bundle: これは実際にView Controllerのコンストラクタです。呼び出し[[MyViewController alloc] init]は、実際に[[MyViewController alloc] initWithNibName:nil bundle:nil]を呼び出して終了します。これは、デフォルトのnib名を使用していることを示します。

2)awakeFromNib ペンだけからView Controllerをインスタンス化するとき、新しいViewControllerを作成せず、既存のViewControllerを逆シリアル化するので、initWithNibName:bundle:は呼び出されません。この場合、deserialization後にawakeFromNibが呼び出されます。

initWithNibName:bundleとawakeFromNibは、ビューコントローラのライフサイクル全体を通して一度しか作成されず、「setup」という関数でこれらの変数を初期化し、initWithNibNameから[self setup]を呼び出すのに好きなビューに関係しない変数を初期化するのに適しています:バンドルとawakeFromNib。

3)viewDidLoad ビューがロードされたときに呼び出されます。あなたの意見に関連するものを初期化するには良い場所です。

4)viewWillAppear:アニメーション ビューが表示されるようになると呼び出されます。サブビューの大きさ(つまり、境界、フレーム、位置など)はこの関数でのみ使用できるので、上記の方法ではなく、これらの量に依存する変数を初期化する必要があります。

7
追加された
viewDidLoadの初期化された変数 - 動作しませんでした
追加された 著者 Parijat Kalia,
awakeFromNibで初期化された変数 - NIBが作成したビューが動作しませんでした。ビューベースのアプリケーションです。
追加された 著者 Parijat Kalia,
私はメソッドが発射されているかどうかをチェックするために両方のメソッドでNSLogに投稿しました...しかし、残念ながらNSLogのコメントはありません
追加された 著者 Parijat Kalia,
うまくいかないとはどういう意味ですか?あなたは何を期待していましたか、実際に何を得ましたか?あなたはいくつかのコードを含めることができますか、私たちは暗闇の中で刺すようになります。 @ aleph_nullの答えはすでにかなり明確です
追加された 著者 Paul.s,
あなたのxibは実際にあなたのクラスに接続されていますか? NSLog()を配置するクラスにクラスが設定されているファイルの所有者を確認してください
追加された 著者 Paul.s,
何を正確に初期化しようとしていますか?また、「うまくいきません」と言ったら、どういう意味ですか?
追加された 著者 aleph_null,
これらのメソッドは、何か間違っていない限り、必要なときに呼び出されます。 Paulが言ったように、もしあなたが私たちにあなたのコードを示していなければ、私たちは基本的にあなたが間違っているかもしれないことを推測しています。
追加された 著者 aleph_null,