4

内のすべてのサブビューの配列を取得する必要がありUIScrollViewます。今、私は使用しています

NSArray *subviews = [myScrollView subviews];

しかし、これはコードの実行時に表示されるサブビューのみを返すようです。UIScrollView の全範囲にあるすべてのサブビューが必要です。現在非表示になっているものも含めます (オフスクリーンのように)。どうすればそれを手に入れることができますか?

基本的に、私はcontentSizea のプロパティのようなものを探していますが、すべてのコンテンツを表示するのに十分なUIScrollView大きさである場合に のサイズだけを返すのではなくUIScrollView、コンテンツ自体を返したいのです。

編集:私はそれを理解したと思います:これが機能していないスクロールビューは実際にはUITableView- であり、画面外にあるセルをデキューしていると思います。そのため、それらは表示されません。確認のためにいくつかのテストを行う予定です。

4

2 に答える 2

3

tl;dr

判明したのは

NSArray *subviews = [myScrollView subviews];

実際には、画面外にある場合でも、すべてのサブビューを a に返しUIScrollView *myScrollViewます。


詳細

私が実際に抱えていた問題は、これを使用しようとしていたスクロール ビューが実際にはUITableViewであり、UITableViewCellaUITableViewが画面から消えると、実際には から削除されるUITableViewということでしたsubviews。探していたものはスクロール ビューにありませんでした。

私の回避策は、 myUITableViewCellによって呼び出される別のメソッドですべての を構築しviewDidLoad、それらのセルをすべて配列に入れることでした。次に、を使用する代わりに、subviewsその配列を使用しました。もちろん、このようにするとパフォーマンスが少し低下しcellForRowAtIndexPathます (配列からセルを返すだけで、通常使用される方法よりも遅くなりますdequeueReusableCellWithIdentifier) が、必要な動作を得るために見つけた唯一の方法でした。 .

于 2013-09-04T17:57:42.433 に答える