2017-06-13 2 views
1

マスター詳細設定のマスターにUITableViewがあります。ユーザーはUITableViewRowActionでセルとやり取りしたり、特定の検索バーを使用して検索したりできます。UITableViewCellの選択解除を確認します

ユーザーが検索バーとやりとりしたり、セルを左にスライドさせると、セルは選択解除されます。セルが選択解除されたときに通知を受ける必要があります。

私はfunc tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)を試しましたが、このような状況にと反応しないようです。

override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 
     print("Cell Deselected") 
} 

これは私が上記与えた条件で実行されることはありませんが、それはtableViewの異なる項目が選択されている場合にのみ実行されますない、私はを必要とするものではありません。

+0

デリゲートを正しく設定して準拠しましたか? – gEeKyMiNd

+0

はい。私は質問をもっと明確に改訂しました。 – Berry

+0

'tableView.deselectRow(at:indexPath、animated:true)'を呼び出していますか? – CarpenterBlood

答えて

0

新しい答え:あなたが他のレスポンダをテーブルの外に選択された場合にキャッチする必要があります

。例えば

for going into edit mode

func setEditing(_ editing: Bool, animated: Bool) { 
    print("Cell deselected") 
} 

going into the search bar、このデリゲートメソッドを使用します。あなたはあなたのビューコントローラを設定(または何を確認してください

func searchBarShouldBeginEditing(UISearchBar) 
{ 
    print("Cell Deselected") 
} 

オリジナルの答えをあなたのdidDeselectRowAt関数が存在します)テーブルビューのdelegate。あなたはあなたのストーリーボードでそれを設定することができますか、それともプログラム的に行うことができます。

+0

デリゲートが正しく設定されています。選択解除は、別のアイテムを選択したときにのみ呼び出されますが、reloadData()や 'UITableViewRowAction'でスライドするようなアクションは実行されません – Berry

0

あなたはクラスレベルにSelectedIndexPathを保つことができ、ユーザーがテーブルの外にどこでも触れたと​​き、あなたはこのように、このメソッドを呼び出すことができます -

tableView.deselectRow(at: SelectedIndexPath, animated: true) 

あなたはまた、からの呼び出しを受け取ることができます。

func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
} 
関連する問題