5

heightForRowAtIndexPathデリゲートメソッドを使用し、「非表示の行」に対して高さ0を返すことにより、UITableViewの行を非表示/表示するコードを継承しました。

コードは機能しますが、予期しない複雑な問題が発生する可能性があるのではないかと心配しています。誰かが私の懸念を和らげるか、これが問題を引き起こす可能性がある理由を教えてもらえますか (初期テストでは問題が見つかりませんでした)。

テーブルはかなり小さく、合計で 10 行未満であり、この非表示の行ソリューションがなくても、行の高さをカスタマイズする必要があります。

4

3 に答える 3

3

作業したばかりのコードでも同じことをします。テーブルビューの設定ごとに動作が異なることに満足していません。
私の場合の代替案はもっと複雑です(見えるか見えないかに適応するモデル)。
今のところ、// HACKコメントを付けて、いくつかの特徴を文書化します。
これは私が見つけたものです(iOS 5.0テスト済み):

  1. tableView.rowHeight=1に設定します。ゼロは、高さがゼロのセル(tableView:tableView heightForRowAtIndexPath:によって返される)にデフォルトの高さを与えます。
  2. セルセパレータが必要です。何も選択されていない場合、デフォルトの高さがゼロの高さの行に割り当てられます。高さ1はセパレーターに含まれています。

コードが別の方法で機能する場合は、コードがどのように設定されているかを知ることは興味深いでしょう。

于 2011-12-05T20:06:53.613 に答える
1

beginUpdates2 つの呼び出しの間の行を追加および削除する方がクリーンになりendUpdatesますが、この高さ 0 の方法が機能しない理由がわかりません。

UI アーティファクトがない場合 (たとえば、[削除]ボタンが次のセルにオーバーフローして表示される)。

于 2011-11-29T15:48:20.750 に答える
0

非表示のセルの高さを 0 に設定するこの方法を使用します。これはうまく機能し、セルの高さを拡張することで新しいセルを含めることをアニメーション化できることも意味します (カレンダー アプリのように DatePicker セルを追加するなど)。

iOS 7.1 で注意しなければならなかったことがいくつかあります。それは、セルの高さが 0 の場合でも非常に押しつぶされたテキストが表示されるため、その場合はセル テキストを削除する必要があることです。また、セルのセパレーターインセットのサイズも変更しました。

于 2014-03-12T12:58:44.690 に答える