vô hiệu hóa đánh dấu không thể xem nhưng cho phép chọn các ô riêng lẻ


83

Khi bạn chạm vào một ô, hàng đó sẽ được chọn và đánh dấu. Bây giờ những gì tôi muốn làm là vô hiệu hóa đánh dấu nhưng cho phép lựa chọn. Có cách nào để giải quyết vấn đề này nhưng nó vô hiệu hóa cả lựa chọn và đánh dấu.


8
cell.selectionStyle = UITableViewCellSelectionStyleNone;thêm điều này vào cellForRowAtIndexPathphương pháp của bạn
Shruti

Câu trả lời:


180

Bạn chỉ có thể đặt kiểu lựa chọn của ô thành "Không có" từ Bảng phân cảnh:

Xem tại đây

Hoặc từ mã:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Đối với Swift 3:

cell.selectionStyle = UITableViewCellSelectionStyle.none

Đối với Swift 4 trở lên:

cell.selectionStyle = .none

Khi tôi chọn "không", tôi mất khả năng làm việc ở trạng thái được đánh dấu. Tôi có thể làm cho nền không / trắng mà không làm mất trạng thái đó không?
Sean

Điều này sẽ đi trong chức năng nào? Tôi đoán "cellForRowAt"?
Daniel Springer

Bạn nên làm điều đó trong tế bào không tableview
Salem Binmusaed

26

Thay đổi UITableViewCellcủa selectedBackgroundViewmàu sắc để minh bạch.

    let clearView = UIView()
    clearView.backgroundColor = UIColor.clearColor() // Whatever color you like
    UITableViewCell.appearance().selectedBackgroundView = clearView

hoặc để đặt cho một ô cụ thể:

cell.backgroundView = clearView


1
Đây là lựa chọn tốt nhất, vì cell.selectionStyle = UITableViewCellSelectionStyleNoneđôi khi phá vỡ một cái gì đó sâu bên trong logic hoạt hình của Táo khuyết.
orkenstein,

sau đó sử dụng thay vì ..UITableViewCell.appearance().selectionStyle = .None
Vaibhav

Điều này rất tốt để sử dụng nếu bạn có những thứ có thể chọn trong ô.
Matthew Korporaal

Giải pháp tuyệt vời. Đưa mã này trong các tế bào awakeFromNib()chức năng công trình một điều trị
Dan2899

Tùy chọn này làm cho dòng phân tách ô trong chế độ xem bảng không được nhìn thấy.
jonye ._. Jin

8

Thử đặt kiểu chọn ô thành Không có -

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Điều này sẽ giải quyết vấn đề của bạn


8

Đối với Swift 3.0 :

cell.selectionStyle = .none

6

Đối với Swift:

UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;

Hoặc khi bạn phân lớp nhanh một ô:

class CustomCell : UITableViewCell {

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        selectionStyle = .None
    }

}

5

nhanh chóng 3

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
}

2

Để thêm màu tùy chỉnh, hãy sử dụng mã dưới đây. Và để làm cho nó minh bạch, hãy sử dụngalpha: 0.0

cell.selectedBackgroundView = UIView(frame: CGRect.zero)
cell.selectedBackgroundView?.backgroundColor = UIColor(red:0.27, green:0.71, blue:0.73, alpha:1.0)

Nếu bạn sử dụng màu tùy chỉnh và muốn tạo cho nó một góc tròn, hãy sử dụng:

cell.layer.cornerRadius = 8

Ngoài ra, hãy sử dụng cái này để có hình ảnh động và cảm nhận tốt hơn

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    tableView.deselectRow(at: indexPath, animated: true)
}

1

Dành cho những người đang tìm kiếm cách lập trình trong Swift 3

cell.selectionStyle = UITableViewCellSelectionStyle.none


1

Bạn có thể đặt thuộc tính lựa chọn của chính ô trong bảng phân cảnh nhập mô tả hình ảnh ở đây


0

Đối với objc:

[cell setSelectionStyle: UITableViewCellSelectionStyleNone];

- (void)viewDidLoad {
  [super viewDidLoad];
  _tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    .. .. .. .. 
   [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
   . . . . .. 
}

0

Đối với Swift 5 , cách tốt nhất là:

cell.selectionStyle = .none

-1

Đây là giải pháp cho swift 3, hoạt động ngay cả trong chế độ chỉnh sửa

cell.selectionStyle = .gray
cell.selectedBackgroundView = {

    let colorView = UIView()
    colorView.backgroundColor = UIColor.black.withAlphaComponent(0.0)
    //change the alpha value or color to match with you UI/UX

    return colorView
}()
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.