問題タブ [nsindexset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
27 参照

ios - UITableView commitEditingStyle: セクションの展開と折りたたみで使用

セクションを展開および折りたたむ UITableView があります。各セクション ヘッダーは、実際には各セクションのインデックス 0 の行です。セクションに 6 つの項目が含まれているとします。ヘッダー行 (インデックス 0) をタップすると、さらに 6 つの行がセクションに追加され、合計で 7 つになります。これは美しく機能し、見栄えもよく、展開と折りたたみはスムーズできれいです。コードは主に、 https ://www.cocoanetics.com/2011/03/expandingcollapsing-tableview-sections で確認できる内容に基づいています。

これの重要な部分は、任意の時点で展開されるセクションのインデックスが NSMutableIndexSet に格納されることです。そのため、テーブル ビューが読み込まれるたびに、self.expandedSections をクエリして、フォルダーの内容を表示するすべての行を読み込むか、フォルダーの名前を含む最初の行だけを読み込むかを確認します。

問題は、ユーザーがフォルダーを削除する必要がある場合に発生します。テーブル ビューに、削除されるフォルダーよりも高いインデックスを持つ展開されたセクションが含まれている場合、次のようなクラッシュが発生します。

'無効な更新: セクション 1 の行数が無効です。更新後の既存のセクションに含まれる行数 (1) は、更新前にそのセクションに含まれる行数 (7) に、そのセクションから挿入または削除された行数 (0 挿入、0 削除) と、そのセクションに移動された、またはそのセクションから移動された行数 (0 移動され、0 移動された) をプラスまたはマイナスします。

このエラーは一目瞭然です。実際、Apple の誰かが可能な限り明確にするために何らかの努力を払っています。しかし、私はそれを回避する方法を見つけることができません。削除のコードは次のようになります。

これは、tableView:commitEditingStyle:forRowAtIndexPath 内で呼び出されます。

どんな提案でも大歓迎です!

0 投票する
1 に答える
44 参照

core-data - SwiftUI、コア データ - コンテキスト メニューでリスト項目を削除

コンテキスト メニューでリスト アイテムを削除しようとしています。データは Core Data から取得されます。

.onDelete は、これ以上何もしなくても、私の deleteExercise 関数で期待どおりに動作します。しかし、コンテキスト メニュー ボタン内で deleteExercise を呼び出すと、IndexSet を要求されますが、正直なところ、どこから取得すればよいかわかりません。

.onDelete を使用するときに IndexSet を指定する必要がないのも不思議です