セクションをリロードした後、tableView行の選択を解除できません

ノア・イアロビーノ

セクションヘッダーをクリックするとセクション行を展開するセクション化されたtableViewを実装しています。ほとんどの場合は機能しますが、行を選択してセクションを折りたたんでからセクションを展開すると、以前に選択した行の選択を解除することはできません。どこが間違っているのかわかりません。もう1つは、デバッガーが[Assert] Unable to determine new global row index for preReloadFirstVisibleRow (0)これまでに見たことのない、または問題に関連しているかどうかを知っている印刷を行うことです。didDeselectanddidSelect関数にブレークポイントを設定する、上記で説明した状況になるまで、すべてが期待どおりにヒットします。

@objc func headerPressed(sender: UIButton) {
    if (!tableDataSource[sender.tag][0].clicked) {
        tableDataSource[sender.tag][0].clicked = true
    } else {
        tableDataSource[sender.tag][0].clicked = false
    }
    let sections = IndexSet.init(integer: sender.tag)
    tableView.reloadSections(sections, with: .fade)
}

func numberOfSections(in tableView: UITableView) -> Int {
    return tableDataSource.count
}
    
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return tableDataSource[section][0].clicked ? tableDataSource[section].count : 0
}
    
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: "ModifierCell") as? ModifierCell else { return UITableViewCell() }
        
    let mod = tableDataSource[indexPath.section][indexPath.row]
    cell.modNameLabel.text = mod.mod.id!
    cell.setSelected(mod.selected, animated: true)
    cell.checkImage.image = mod.selected ? UIImage(systemName: "checkmark.circle") : UIImage(systemName: "circle")
    
    return cell
}
    
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    cell.setSelected(tableDataSource[indexPath.section][indexPath.row].selected, animated: false)
}
    
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath) as! ModifierCell
    cell.checkImage.image = UIImage(systemName: "checkmark.circle")
    tableDataSource[indexPath.section][indexPath.row].selected = true 
}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath) as! ModifierCell
    cell.checkImage.image = UIImage(systemName: "circle")
    tableDataSource[indexPath.section][indexPath.row].selected = false
}

// .....

struct tableElement {
    var mod: Modifier
    var clicked = false
    var selected = false
}
DonMag

実際の設定からいくつかの情報が欠落していますが、これ問題が解決するはずです...

willDisplay cell関数を次のように置き換えます

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if tableDataSource[indexPath.section][indexPath.row].selected {
        tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none)
    }
    //cell.setSelected(tableDataSource[indexPath.section][indexPath.row].selected, animated: false)
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

選択を解除した後、オプションを再度選択することはできません

分類Dev

選択したセルのみをリロードできません

分類Dev

セルの選択を解除すると、コレクションビューのdidDeselectItemAtIndexPathが起動しません

分類Dev

codeigniterでセッションを設定解除した後にセッションを設定できません

分類Dev

tableViewのセクションの行にスクロールできません

分類Dev

QlikViewでコードの選択したセクションのみをロードします

分類Dev

選択解除アニメーションのアニメーション期間を変更できません

分類Dev

選択を解除した前のセルの属性を復元できません

分類Dev

クリーンインストール後、選択したパスワードを使用してログインできません

分類Dev

オプションと値をオブジェクトとして選択コンポーネントから初期値を選択解除できません

分類Dev

Python 3.0を使用して撮影した後、スクリーンショットを削除できません(別のプロセスで使用されているため、プロセスはファイルにアクセスできません)

分類Dev

1つのメソッドの休止状態セッションで行われた変更は、同じセッション内の条件を使用してクエリを選択するために表示されません

分類Dev

Jquery-選択オプションを変更した後、アラートを取得できません

分類Dev

ビューデータドロップダウンリストの選択した値をコントローラーアクションに取得できませんか?

分類Dev

選択オプションを選択してボタンをクリックするためのJQueryコードが機能しませんか?

分類Dev

NoSuchElementException:メッセージ:そのような要素はありません:ドロップダウンボックス内のオプションを選択しようとしているときに要素を見つけることができません

分類Dev

「カードフリッピング」効果のためにクロムのTransformYの後に入力を選択することはできません

分類Dev

AngularJs:クリックした後、divカード全体を色で強調表示し、別のカードが選択された後に選択を解除します

分類Dev

select2ドロップダウンから特定のオプションを選択した後、アクションをトリガーします

分類Dev

リードの変換中にエラーが発生しました: ロールのコレクションを遅延初期化できませんでした: プロキシを初期化できませんでした - セッションがありません

分類Dev

18.04 へのアップグレード後に「セッションを開始できませんでした」

分類Dev

jarファイルをselenium3.0に更新した後、ドロップダウンオプションを選択できません

分類Dev

ラジオボタンを選択した後もチェックされたままになり、選択を解除できませんpython tkinter

分類Dev

以前に選択したオプションを選択できません

分類Dev

すべてを構成した後、ドメインURLを介してLaravelアプリケーションにアクセスできません

分類Dev

要素のIDを変更した後、アクションをトリガーできません

分類Dev

アプリケーションの更新をアップロードするときにビルドを選択できません

分類Dev

メッセージ:Seleniumのドロップダウンメニュー内のオプションをクリックしようとしたときに、要素<option>をスクロールして表示できませんでした

分類Dev

削除できない行をスワイプした後、セルの選択を解除します

Related 関連記事

  1. 1

    選択を解除した後、オプションを再度選択することはできません

  2. 2

    選択したセルのみをリロードできません

  3. 3

    セルの選択を解除すると、コレクションビューのdidDeselectItemAtIndexPathが起動しません

  4. 4

    codeigniterでセッションを設定解除した後にセッションを設定できません

  5. 5

    tableViewのセクションの行にスクロールできません

  6. 6

    QlikViewでコードの選択したセクションのみをロードします

  7. 7

    選択解除アニメーションのアニメーション期間を変更できません

  8. 8

    選択を解除した前のセルの属性を復元できません

  9. 9

    クリーンインストール後、選択したパスワードを使用してログインできません

  10. 10

    オプションと値をオブジェクトとして選択コンポーネントから初期値を選択解除できません

  11. 11

    Python 3.0を使用して撮影した後、スクリーンショットを削除できません(別のプロセスで使用されているため、プロセスはファイルにアクセスできません)

  12. 12

    1つのメソッドの休止状態セッションで行われた変更は、同じセッション内の条件を使用してクエリを選択するために表示されません

  13. 13

    Jquery-選択オプションを変更した後、アラートを取得できません

  14. 14

    ビューデータドロップダウンリストの選択した値をコントローラーアクションに取得できませんか?

  15. 15

    選択オプションを選択してボタンをクリックするためのJQueryコードが機能しませんか?

  16. 16

    NoSuchElementException:メッセージ:そのような要素はありません:ドロップダウンボックス内のオプションを選択しようとしているときに要素を見つけることができません

  17. 17

    「カードフリッピング」効果のためにクロムのTransformYの後に入力を選択することはできません

  18. 18

    AngularJs:クリックした後、divカード全体を色で強調表示し、別のカードが選択された後に選択を解除します

  19. 19

    select2ドロップダウンから特定のオプションを選択した後、アクションをトリガーします

  20. 20

    リードの変換中にエラーが発生しました: ロールのコレクションを遅延初期化できませんでした: プロキシを初期化できませんでした - セッションがありません

  21. 21

    18.04 へのアップグレード後に「セッションを開始できませんでした」

  22. 22

    jarファイルをselenium3.0に更新した後、ドロップダウンオプションを選択できません

  23. 23

    ラジオボタンを選択した後もチェックされたままになり、選択を解除できませんpython tkinter

  24. 24

    以前に選択したオプションを選択できません

  25. 25

    すべてを構成した後、ドメインURLを介してLaravelアプリケーションにアクセスできません

  26. 26

    要素のIDを変更した後、アクションをトリガーできません

  27. 27

    アプリケーションの更新をアップロードするときにビルドを選択できません

  28. 28

    メッセージ:Seleniumのドロップダウンメニュー内のオプションをクリックしようとしたときに、要素<option>をスクロールして表示できませんでした

  29. 29

    削除できない行をスワイプした後、セルの選択を解除します

ホットタグ

アーカイブ