0

IB で UI をセットアップすることの利点についての話を読んだことがあります。そして、ペン先が「目覚める」と、その中のすべてのオブジェクトが「生き返る」のです。

ViewController が所有する nib に約 10 個の UIView オブジェクトを配置して実験しています。UIView オブジェクトは MyView 型であり、ViewController のそれぞれのプロパティに接続されています。MyView は UIView のサブクラスで、UIImage *image や NSNumber *value などのいくつかの追加プロパティがあります。

ペン先にもある他のいくつかの UIImageView 要素を見ることができるので、ペン先は明らかにロードされます。しかし、10 個の MyView オブジェクトのいずれかにプロパティを設定しようとすると、設定できません。デバッガーでは、これらのオブジェクトのプロパティはすべて 0x0 のままです。

また、MyView クラスの initWithCoder メソッドは、これらの 10 個のオブジェクトがそれぞれスリープから復帰したときに起動するので、実行時にいくつかのプロパティを設定できるという印象も受けました?!?

何が起こっているのか誰でも知っています...これでIBを放棄できてうれしいですが、試してみようと思いました...

4

3 に答える 3

2

viewDidLoad は、ビュー内のすべてのオブジェクトが作成されたときに呼び出される最初のメソッドです。initWithCoder は、それらのいずれよりも前に呼び出されます。

viewWillAppear は、viewDidLoad の後に呼び出され、何かが表示される前に呼び出されます。毎回呼び出されます。viewDidLoad は、ビュー オブジェクトが作成されたときにのみ呼び出されます。

于 2009-07-02T04:49:59.950 に答える
1

UIViewControllersプロパティに最初にアクセスするときにビューをロードしますself.viewviewDidLoadコントローラーのメソッドが呼び出されるかどうかを確認してください。

また、主にメモリ使用量が原因で、複数の独立したビューをペン先からロードすることは推奨されないことをどこか (Apple のドキュメントである可能性があります) で読んだことを覚えています。

于 2009-07-02T02:02:44.580 に答える
0

ビューをファイルの所有者に割り当てた可能性があります。

IB を開きます。持っているウィンドウで。ファイルの所有者のファースト レスポンサ ビュー

「ビュー」オブジェクトを右クリックします。「新しい参照アウトレット」オプションが1つしかない場合は、ビューをファイル所有者に配線していないことを意味します。この横にある小さな o をつかんで、ファイルの所有者までドラッグします。ファイルの所有者を超えると、新しいメニューがポップアップし、「表示」を選択できるはずです

これを保存して、現在動作しているかどうかを確認してください。

最後に、「ファイルの所有者」がクラスに設定されていることを確認します。ファイルの所有者を選択してこれを調べるだけです。ドロップダウンの 1 つで、クラスを選択できます。

IBはクールです。あきらめないでください...セットアップ コードの最大 70% を節約できます (Apple の WWDC で述べられているように)。

ジョン。

于 2009-07-02T02:26:12.910 に答える