私は私のUITableViewに2つのセクションを持っています。
最初のセクションで複数のセルを選択できるようにし、2番目のセクションで1つの選択のみを許可します。
私はいくつかのコードを試しましたが、うまく機能しませんでした。
できるだけ早くコードを入力してください。ありがとうございました。UITableView - 複数選択と単一選択
6
A
答えて
4
おそらく、あなたが実装できるテーブルビューのデリゲートメソッド:
tableView(_:shouldHighlightRowAtIndexPath:)
と
tableView(_:didSelectRowAtIndexPath:)
...と判断した場合は(indexPath.row
とindexPath.section
から)関連するセクションはsをサポートします"0
セクションは複数選択をサポートしていますが、セクション1
はサポートしていません")、単一選択のみをサポートしている場合は、選択された行が既に存在するかどうかをチェックしますtableView.indexPathsForSelectedRows
)。
選択された行がすでに存在する場合は、あなたがすることができます:tableView(_:shouldHighlightRowAtIndexPath:)
から
- 戻り
false
、および - が
tableView(_:didSelectRowAtIndexPath:)
から何も(ちょうどreturn
)を行いませんに(私は、このメソッドが実際に呼び出されたかどうかわからないんだけどfalse
をshouldHighlight...
から返すと、おそらくそれをチェックします)。
0
セクション2で選択した行を新しい選択行にする場合は、これが有効です。それ以外の場合、@ NicolasMiariの答えに従ってください。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.section == 1 {
for i in 0..tableView.numberOfRowsInSection(indexPath.section) - 1 {
let cell: UITableViewCell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: i, inSection: indexPath.section))!
if (i == indexPath.row) {
cell.accessoryType = .Checkmark
cell.selected = false
}
else {
cell.accessoryType = .None
}
}
}
else {
//Do whatever for the first section
}
}
非常にエレガントではありませんが、うまくいけばそれはあなたにアイデアを与えるでしょう。
2
これは簡単に試すことができます。このソリューションは私にとって完璧に機能します。 ...それは多分しようと他人のために働い与える
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.section == 0 {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
cell.accessoryType = .Checkmark
}
}
else {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
cell.accessoryType = .Checkmark
}
}
}
func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.section == 1 {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
cell.accessoryType = .None
}
}
}
編集:スウィフト-4
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.section == 0 {
if let cell = tableView.cellForRow(at: indexPath) {
cell.accessoryType = .checkmark
}
}
else {
if let cell = tableView.cellForRow(at: indexPath) {
cell.accessoryType = .checkmark
}
}
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
if indexPath.section == 1 {
if let cell = tableView.cellForRow(at: indexPath as IndexPath) {
cell.accessoryType = .none
}
}
}
関連する問題
- 1. 複数テーブル単一選択
- 2. 単一のコンボボックス選択から複数選択された値
- 3. uitableviewに複数選択と単一選択を許可することは可能ですか?
- 4. ListBox SelectionMode単一の複数選択
- 5. UITableView複数選択、あらかじめ選択されたアイテム
- 6. UITableViewの選択と選択解除
- 7. 複数選択Recyclerview一覧
- 8. asp.net単一のボタンで複数のグリッドを選択する行の選択
- 9. SQL Serverで複数選択の代わりに単一選択を返す
- 10. 複数選択
- 11. 複数選択
- 12. UITableViewとアイテムの選択
- 13. 複数選択オプションを選択する
- 14. リスト選択デフォルトの複数選択
- 15. Struts複数選択ボックスの選択
- 16. スウィフトコレクションビュー選択セル複数選択
- 17. 複数選択テーブルビューセルと選択スタイルなし
- 18. uitableviewセル選択スタイルのUITableViewセルを選択
- 19. シャイニー+ DT:単一セル選択
- 20. MultipleView RecyclerView単一選択が
- 21. 単一選択CheckedListBoxコントロール
- 22. jqgrid単一選択チェックボックス
- 23. は単一選択のみ
- 24. 選択選択解除複数選択フィールド
- 25. 選択オプションの選択複数選択オプションのデータ属性
- 26. 選択2複数選択デフォルトの選択
- 27. UITableViewは複数のセルを選択したときに複数の選択を可能にする
- 28. 複数の選択tableView
- 29. 複数の単一選択を避け、NHibernateで複数選択を作成する方法
- 30. formDataと "複数選択"
についてあなたは二行が選択された場合に、第2節では、最初の行の選択を解除しますか?また、既存のコードを投稿すると役立ちます。 – Caleb