Đó là một câu hỏi thực sự cũ, vẫn là một trong những mục đầu tiên trên google khi tìm kiếm cách loại bỏ dấu phân cách trên và dưới cho mỗi phần.
Sau một số cuộc điều tra, tôi phát hiện ra rằng không có cách nào và chỉ là Apple không có ý định làm cho điều này bằng cách nào đó xảy ra mà không có các vụ hack phức tạp một cách ngu ngốc của hệ thống phân cấp chế độ xem.
May mắn thay, có một cách hoàn toàn đơn giản và dễ dàng để đạt được vẻ ngoài như vậy:
Tôi nói đơn giản nhưng đối với người mới bắt đầu, điều này có thể khó khăn vì thiếu hiểu biết về cách UITableView
hoạt động và cách triển khai các tế bào của riêng bạn. Hãy để tôi cố gắng giải thích nó:
- Tạo một
UITableViewCell
lớp con
- Trong ô của bạn, hãy tạo một thuộc
@IBOutlet weak var separatorView: UIView!
tính
- Trong Bảng phân cảnh của bạn, hãy chọn ô trong chế độ xem bảng và chọn ô của riêng bạn làm lớp sao lưu ô. Lưu ý : Bạn không phải sử dụng kiểu tùy chỉnh. Bạn vẫn có thể sử dụng Cơ bản, Phụ đề, v.v.
- Đặt tùy
UITableView
s Separator Style
để None
che giấu các dấu phân cách mặc định
- Kéo một
UIView
ô vào ô của bạn và thay đổi kích thước để ô nằm ở dưới cùng (hoặc trên cùng) của ô. Sử dụng chữ Size Inspector
s Autoresizing
để ghim nó vào đầu / cuối / cuối và cung cấp cho nó chiều rộng linh hoạt (hoặc Autolayout nhưng chỉ ở trên cùng trong trường hợp này)
- Kết nối chế độ xem với ổ cắm của lớp di động của bạn
- Trong
UITableViewDataSource
s của bạn , cellForRowAtIndexPath:
hãy đặt thuộc isHidden
tính của dấu phân tách tùy chỉnh của bạn dựa trên nếu đó indexPath.row
là hàng cuối cùng (hoặc đầu tiên, nếu chế độ xem của bạn ở trên cùng) trong phần
Đây là một số mã ví dụ:
class MyCell: UITableViewCell {
@IBOutlet weak var separatorView: UIView!
}
class ViewController: UITableViewController {
override func numberOfSections(in tableView: UITableView) -> Int {
return 3
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! MyCell
cell.separatorView.isHidden = indexPath.row == 2
return cell
}
}
Và đây là một số ảnh chụp màn hình:
Vâng, đó là một số công việc nhưng không có cách nào để có một thứ gì đó miễn phí khi viết mã. Cuối cùng, chúng ta là lập trình viên và việc viết mã là tùy thuộc vào chúng ta. Tốt hơn hết là dành 5-10 phút để thiết lập điều này hơn là chỉ sao chép, dán một số mã hack có thể không tiếp tục hoạt động trong tương lai khi Apple quyết định thay đổi hệ thống phân cấp chế độ xem.
Việc viết câu trả lời này thực sự tốn nhiều công sức hơn là thực hiện dấu phân tách. Tôi cũng đã tìm kiếm một giải pháp dễ dàng và nhanh chóng nhưng cuối cùng lại không có một giải pháp đủ tốt mà tôi cảm thấy đáng sử dụng.
Tôi hy vọng bạn cũng cảm thấy nghi ngờ khi bạn thấy các vòng lặp lặp lại trên các lần xem phụ của ô để ẩn hoặc thậm chí xóa các chế độ xem trong thời gian chạy khỏi hệ thống phân cấp chế độ xem mà Apple cung cấp cho bạn, khi có một giải pháp bằng chứng dễ dàng, linh hoạt, ổn định và trong tương lai ngay gần đó . 7 bước nhỏ thực sự là tất cả những gì bạn cần và chúng rất dễ hiểu.
UIView
s vào ô làm dấu phân tách giả. Hy vọng rằng có một lựa chọn tốt hơn.