我在我的UITableView中有2個部分。
我想讓第一部分允許多個單元格選擇,第二部分只允許單個選擇。
我試了一些代碼,但沒有很好地工作。
如果可能的話,快速代碼。謝謝。UITableView - 多選和單選
6
A
回答
4
也許你可以實現表視圖的委託方法:
tableView(_:shouldHighlightRowAtIndexPath:)
和
tableView(_:didSelectRowAtIndexPath:)
...並確定(由indexPath.row
和indexPath.section
),如果相關部分支持s單選/多選(這取決於您的數據模型的自定義邏輯,例如:「部分0
支持多選,但部分1
不支持」),並且如果它僅支持單選,請檢查是否已選擇一行tableView.indexPathsForSelectedRows
)。
如果有選擇的行已經,您可以:
- 返回
false
從tableView(_:shouldHighlightRowAtIndexPath:)
和 - 不要從
tableView(_:didSelectRowAtIndexPath:)
沒有(只是return
)(我不知道,如果這個方法實際上是調用當你從shouldHighlight...
返回false
時,也許檢查它)。
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. UITableView選擇 - 多選
- 2. UITableView多選
- 3. UITableView多選
- 4. 分組的UITableView - 允許多選和單選
- 5. 多選UITableView無dequeueReusableCellWithIdentifier
- 6. UITableView多重選擇
- 7. 開關選擇多/單的UITableView
- 8. UITableView多選和滑動操作
- 9. 可能允許一個uitableview允許多個和單個選擇?
- 10. 選擇多的UITableView行
- 11. 多選UITableView不起作用
- 12. UITableView分組 - 選擇多行
- 13. iOS UITableView單元格選擇
- 14. UITableView單元格選擇
- 15. 的UITableView單元選擇
- 16. 簡單的方法來選擇一個選項在子UITableView和回到父UiTableView
- 17. UITableView選擇和取消選擇
- 18. 多選擇表視圖單元格和沒有選擇樣式
- 19. UITableView和選擇項目
- 20. 我如何在我的tableview中有單選和多選?
- 21. UITableView多選。自動選擇行隨機選擇行
- 22. UITableView編輯中的多項選擇 - 最多兩行選擇?
- 23. 的UITableView選擇
- 24. UITableView頭選擇
- 25. Powershell多選菜單和子菜單
- 26. 簡單表單多選複選框
- 27. 如何在UITableView中啓用多選?
- 28. 如何在UITableView中選擇多行
- 29. 選擇的UITableView多行滾動
- 30. 從陣列的UITableView選擇單元格
你想選擇第二行,當第二部分取消的第一行?另外,發佈現有代碼確實有幫助。 – Caleb