Tôi có 2 phần trong UITableView của mình.
Tôi muốn phần đầu tiên cho phép chọn nhiều ô và phần thứ hai chỉ cho phép chọn một lần.
Tôi đã thử một số mã nhưng không hoạt động tốt.
Mã nhanh nếu có thể. Cảm ơn bạn.UITableView - Nhiều lựa chọn VÀ lựa chọn duy nhất
Trả lời
Có lẽ bạn có thể thực hiện quan điểm của bảng phương pháp đại biểu:
tableView(_:shouldHighlightRowAtIndexPath:)
và
tableView(_:didSelectRowAtIndexPath:)
... và xác định (từ indexPath.row
và indexPath.section
) nếu phần có liên quan hỗ trợ s ingle/multiple selection (điều này sẽ phụ thuộc vào tùy chọn logic của mô hình dữ liệu của bạn: "Section 0
hỗ trợ nhiều lựa chọn nhưng phần 1
không") và nếu nó chỉ hỗ trợ lựa chọn duy nhất, hãy kiểm tra xem đã chọn một hàng chưa (bằng cách truy cập tableView.indexPathsForSelectedRows
).
Nếu có một hàng đã chọn rồi, bạn có thể:
- Return
false
từtableView(_:shouldHighlightRowAtIndexPath:)
, và - Không làm gì (chỉ
return
) từtableView(_:didSelectRowAtIndexPath:)
(Tôi không chắc chắn nếu phương pháp này là thực sự gọi khi bạn trả lạifalse
từshouldHighlight...
, vì vậy có lẽ hãy kiểm tra lại).
Nếu bạn muốn hàng đã chọn trong phần 2 là hàng mới được chọn, điều này có thể phù hợp với bạn. Khác, đi với câu trả lời của @ 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
}
}
Không thanh lịch, nhưng hy vọng nó sẽ cung cấp cho bạn ý tưởng.
Bạn chỉ cần thử điều này. Giải pháp này làm việc cho tôi một cách hoàn hảo. Cung cấp cho nó một thử có thể làm việc cho người khác ...
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
}
}
}
được sửa đổi: Đối với Swift-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. Duy trì lựa chọn khi cập nhật UITableView qua reloadData
- 2. Vô hiệu hóa lựa chọn một UITableViewCell duy nhất
- 3. QListWidget và nhiều lựa chọn
- 4. Nhiều quy tắc cho :: lựa chọn và :: - MOZ lựa chọn (? Và sử dụng chọn)
- 5. JcomboBox nhiều lựa chọn
- 6. Nhiều lựa chọn trên WinForms
- 7. Hộp kiểm chuyển đổi (nhiều lựa chọn) thành nút radio hoặc hộp kiểm có lựa chọn duy nhất?
- 8. Nhiều lựa chọn giá trị sửa mẫu lựa chọn
- 9. cách ẩn lựa chọn trên UITableview?
- 10. ListBox với một lựa chọn duy nhất và cũng không được chọn trên nhấp chuột ...?
- 11. Nhiều lựa chọn ListView và SharedPreferences
- 12. WPF Lựa chọn duy nhất giữa hai ListBox
- 13. hình ảnh android bên trong một lựa chọn duy nhất
- 14. Nhiều lựa chọn trong Vim
- 15. Chèn vào nhiều lựa chọn
- 16. JavaFX ListView Nhiều lựa chọn
- 17. Quản lý nhiều lựa chọn với MVVM
- 18. Select2 Dropdown Nhiều lựa chọn và bỏ chọn
- 19. Lựa chọn Django chọn
- 20. SQL nhiều đến nhiều lựa chọn
- 21. serialise lựa chọn văn bản cho IntegerField với lựa chọn
- 22. Hiển thị Lots Of RichText: Chọn lựa chọn tốt nhất
- 23. Tách biệt nhiều hàng lựa chọn
- 24. Nhiều tùy chọn giá trị lựa chọn jenkins
- 25. Xóa danh sách lựa chọn đơn Chọn lựa
- 26. Chọn lựa chọn nhóm khởi động Bootstrap
- 27. LINQ Cú pháp - Lựa chọn nhiều cột
- 28. CHỌN phần tử theo kiểu hiển thị nhiều lựa chọn mà không cho phép nhiều lựa chọn
- 29. lựa chọn python argparse với lựa chọn mặc định
- 30. ActiveAdmin Nested Form nhiều lựa chọn
Bạn có muốn phần thứ hai để bỏ chọn hàng đầu tiên khi hàng thứ hai được chọn? Ngoài ra, việc đăng mã hiện tại của bạn sẽ giúp ích. – Caleb