私は、それぞれが答えを持っているが、組み合わせられていないという問題が非常に多い。 Xibsを2つ読み込んでいます。ヤンのおかげでawakeAfterUsingCoder:(NSCoder *)aD {}を使用しており、カスタムビューの初期読み込みを得ることができます(カスタムビューを含むスクロールビューが内部にあります)。Xibから2つのXibsが読み込まれていて、列挙されて間違ったタイプの間に突然変異が起こった
次に、[NSBundle] ... loadNibNamed:@ "Name"] objectAtIndex:0]を使用する内部ビューをロードして、Xibからプログラムでロードします。
これまでのところ、コードでXib、XibでXib(AwakeAfter以外に余分なコードはありません)を読み込んでいます。さて、私はscrollViewにミニビューを追加するために、loadNib ... options ...を使って追加します。エラーコード...が突然変異しました。列挙されている間。
何が?だから私は明らかに私の配列を変更しています(最初は、追加したときにスクロールビューのサブビューを列挙していると思っていましたが、そうではありません...私はそんなに不注意ではありません)。まあ、それは同時性ですか?いいえ、私はまっすぐループしていて、代議員に「こんにちは、私はデータを変更しました、そして現在はサブビューに追加する」と言っています。しかしそれはそうではありません、正直なところ...あなたはこれを愛するでしょう: 私は私の意見をそのように名づけたとしましょう。 BigScrollView(内側のビューを保持)し、次にこれを... InnerView * iv;
次に、このようなことをします。InnerView * temp = [[[NSBundle mainBundle] loadNibNamed:@ "InnerView" owner:self options:nil] objectAtIndex:0];時にはそれを型キャストすることさえできます。それから、クラッシュする前に、私は NSLog(@ "クラス:%@"、NSStringFromClass([temp class]); プリントは何ですか? BigScrollView。デバッグしてPO ObjectNameを使用することさえできます。
どうしますか?
さらに検索すると、「新しいNibをロードすると、Nibから読み込んだすべての単一ビューで毎回AwakeFromNibが呼び出されます。古いNibもすべて呼び出されます」という結果が得られました。 。まあ、それはちょっと変だけど...後で私はおそらくそのことを理解しています...
- (id)awakeAfterUsingCoder:とも呼ばれます。つまり、InnerViewの読み込み呼び出しを使用すると、自動的にBigScrollViewが呼び出されます。awakeAfterUsingCoder:
これをNSLogsでさらに検査した後、私は正しくなりました。
私はこの行を押したので、 if(![self isKindOfClass:[BigScrollView class]])selfを返します。
新しいBigScrollViewを作成しないようにするだけです(実際のタイプは異なる、ちょうどfyi、私は本当にそれが何であるかカスタムが必要です)。
しかし、それは動作していません。
私は、速度とXibsカスタムを使用する能力の両方で、ネイティブiOSを使用することの主要な支持者です。あなたがWWDC 2010を見ていない限り、MKMapRectがどのように説明されていないか、UIScrollViewがその仕様に "should should"を持っているかのように、私は間違ったことをせずに、それらをよりよく理解し、ツールを使用する...私は軽い心でこれを言う:リンゴはどのように "int num"とフロートを受け取ることができるだけでなく、マルチスレッドの何かを聞いていないときに何かをするか?私が得られない一般的なプロセスはありますか?
Xibをxibでインスタンス化せずに、コードを両方とも呼び出し、手動で配置するだけで、それが動作するかどうかを確認することができます。しかし、私はSOの質問のこの化合物を見つけていないので、私はどんな答えにも開いています。
私はちょうど私のコードではありませんに作り直していますawakeAfterCoderを使用してください。私は余分な "doLayout"のものを持っていましたが、並行性を使うものは何もありませんでした。それは決して壊れませんでしたが、単にInnerView * iv = ... loadNibNamed:@ "InnerView"]を入れてもそれを追加していないと、まだクラッシュしていました –
スティーブンに感謝します。私の場合は、メインのxib内のNSTableViewによって自動的にロードされるカスタムNSCellを定義していました。カスタムセルは、ビューを含む別のxibをロードします。私はちょうど2番目の負荷で2秒の遅れを入れていました - それがもう一度やり直されるのを見てきました。 – Colin