6

私の質問は次のとおりです。ヘッダーで構成されるテーブルがあります。ヘッダーをクリックすると、後で再起動します

[self.tableView reloadSections: [NSIndexSet indexSetWithIndex: section] withRowAnimation: UITableViewRowAnimationAutomatic];

実際、以前のバージョン (iOS 6.1.3 以下) では、セルがリロードされ、すべて問題ありませんでした。iOS7 では、セルが非表示になります。それは何で、どのように解決するのですか?また、クリックされたセルだけでなく、次の順位 (下または上) も表示されます。

<MyHeaderCell: 0x146ea600; baseClass = UITableViewCell; frame = (0 0, 320 75); hidden = YES; autoresize = W; gestureRecognizers = <NSArray: 0x146e10c0>; layer = <CALayer: 0x146e95d0 »

基本的に、これはログの問題の 1 つです。セルが隠れていることがはっきりとわかります。

それにもかかわらず、私が使用するときは[self.tableView reloadData];すべて問題ありませんが、アニメーションが必要です。

4

2 に答える 2

8

これは古い質問ですが、何が原因かはわかっていると思います。

これは、自分で参照を保持しているという意味で「静的」セルですか? その場合、問題はおそらく次のとおりです。

アニメーション化されたリロードを行うと、テーブル ビューは既存のセルをフェード アウトすると同時に、新しいセルをフェード インします。問題は、「新しい」セルが古いセルとまったく同じセルである場合、同じセルが同時にフェードインとフェードアウトすることです! あなたの場合、フェードアウトアニメーションが優先され、セルは非表示になります。

これは、同じ参照を使用する代わりに常にセルを再利用することで修正されますが、これが常に最適であるとは限りません。

于 2013-12-10T10:09:11.393 に答える
1

[tableView reloadData]直後に呼び出す[tableView reloadSections:withRowAnimation]と、アニメーションに大きな影響を与えることなく修正されます。

于 2015-06-26T10:27:20.507 に答える