0

多くの行 (〜 100) を持つ UIScrollView があり、サブビュー (行) をすばやく割り当てて追加するために dequeueReusableRow メソッドを実装しました。すべて正常に動作しますが、減速して非常に速くスクロールすると、一部のビューが時間通りに scrollView に追加されません。

- (UIView *)dequeueReusableRow
{
    UIView *view = [reusableRows anyObject];

    if(view) 
    {
        [[view retain] autorelease];
        [reusableRows removeObject:view];
    }else{
        view = [[UIView alloc] init....
    }

    return view;
}

- (void)addVisibleRows
{
    UIView *row = [self dequeueReusableRow];
    row.frame = ....
    [scrollView addSubview:row]
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    [self addVisibleRows];
    [self removeInvisibleRows];
}

アコーディオンの構造が次のようになっているため、UITableView の使用を提案しないでください。

section
- section
-- section
--- row
- section
section
- row
4

2 に答える 2

1

dequeueReusableRowはUIScrollViewControllerの一部ではないため、dequeueReusableRowは自分で実装したものだと思います。もしそうなら、あなたはそのコードを示すことができますか?それは私たちが非効率性を助けることができる場所である可能性があります。

また、スクロールビューに行が含まれている場合は、UITableViewを使用して多くの作業を実行してみませんか?あなたがそれを提案しないように頼んだことを私は知っています-私たちがあなたをより良く助けることができるようにあなたがScrollViewを使う必要がある理由を説明できますか?

于 2012-07-02T21:19:06.283 に答える
0

そのコード スニペットから判断するのは非常に困難です。いくつかの詳細をいただければ幸いです。

それまでの間の小さな提案:removeInvisibleRows事前に電話するaddVisibleRows

于 2012-07-02T21:54:42.553 に答える