1

TableViewControllerをいじってからしばらく経ちましたが、少し錆びています...しかし、セクションに表示する行がゼロの場合(配列が空の場合)に「うそをつく」ように設定したいと思います。 "をコントローラーに送信し、numberOfRowsInSectionに1を返します。次に、cellForRowAtIndexPathで、「このセクションは空です」という効果を示すUILabelを1つの行のセルに配置します。

問題は、テーブルが編集モードにあり、ユーザーが最後の行を削除すると、次のエラーが発生することです。

キャッチされなかった例外によるアプリの終了'NSInternalInconsistencyException'、理由:'無効な更新:セクション1の行数が無効です。更新後の既存のセクションに含まれる行数(1)は、それに含まれる行数と同じである必要があります。更新前のセクション(1)、およびそのセクションから挿入または削除された行の数(0が挿入、1が削除)。

スワイプして削除した後、テーブルを再描画しようとすると、最後の行がまだ残っていることに気付くのは気が動転しているようです。これをどこで/どのように処理する必要がありますか?確かに、私はAppleのHIG全体をある程度くずしているが、空のセクションの上にヘッダーだけがあるとユーザーを混乱させる...

ありがとう!

4

1 に答える 1

0

を使用して、実際に「偽の」行を挿入する必要があります-insertRowsAtIndexPaths:withRowAnimation:。UITableViewの観点からは、「実際の」行や「偽の」行はありません。データソースが言う行は何でもあります。つまり、1つの行があり、次に1つの行を削除すると、UITableViewは「行数はいくつですか」と尋ね、1と言い、UITableViewは「1-1 =1」と言いました。

行を挿入する場合(「本物」または「偽物」はすべて同じです)、挿入することをUITableViewに通知する必要があります。

于 2009-08-26T23:47:57.710 に答える