Xóa màu đánh dấu ô của UITableView


109

Tôi muốn loại bỏ màu xanh lam mặc định của lựa chọn ô uitableview. Tôi không muốn bất kỳ màu lựa chọn nào ở đó. Tôi chưa tạo lớp ô tùy chỉnh. Tôi đang tùy chỉnh ô bằng cách thêm nhãn và các nút trên đó. Tôi đã thử làm:

cell.selectioncolor = [UIColor clearcolor];

nhưng nó nói rằng phương pháp này không được dùng nữa.

Câu trả lời:


319
cell.selectionStyle = UITableViewCellSelectionStyleNone;

trong Swift 4 được cập nhật

cell.selectionStyle = UITableViewCell.SelectionStyle.none

Hoặc là

cell.selectionStyle = .none

3
Tôi đã giữ mã đó trong cellForRowAtIndexPath :, đó có phải là nơi chính xác để giữ không?
Pawriwes

9
@Pawriwes, vâng. Nếu tôi nhớ không lầm, bạn cũng có thể thiết lập rằng bất động sản trong XIB di động nếu bạn tạo tế bào của bạn sử dụng giao diện Builder
Vladimir

4
Nếu tôi làm như vậy, khi chỉnh sửa, nó không chọn ô :(
AsifHabib

54

Chọn cái này trong StoryboardhoặcXIB


nhập mô tả hình ảnh ở đây


7
bổ sung, bạn phải kiểm tra "bảng Xem di động " nếu bạn thay đổi trong "xem bảng" hơn bạn không chọn các tế bào.
Kernelzero

2
@Pulkit đó không phải là sự thật. Điều này sẽ chỉ vô hiệu hóa trạng thái lựa chọn của ô. Điều này không liên quan gì đến dữ liệu được hiển thị trong đó hoặc xử lý sự tương tác của nó. Kiểm tra để đảm bảo rằng bạn đã đặt tất cả đăng ký thích hợp và không ghi đè các chức năng khác.
Michael

điều này hoàn toàn sai
Fattie

12
// Swift 2.0

cell.selectionStyle = UITableViewCellSelectionStyle.None

5
Hoặc bạn có thể sử dụng trực tiếp giá trị enum cell.selectionStyle = .None
Steve


6

Mục tiêu-C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

hoặc là

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Swift 4:

self.selectionStyle = UITableViewCellSelectionStyle.none;

Swift 3:

cell.selectionStyle = .none

Swift 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Nếu bạn muốn thay đổi nó chỉ bằng cách sử dụng Storyboard / Xib, chỉ cần chọn Ô mà bạn muốn loại bỏ "Hiệu ứng kiểu lựa chọn" và xác định nó là "Không". Nó cũng sẽ hoạt động như ma thuật: D

Bảng phân cảnh / Xib


1
Swift 4: cell.selectionStyle = UITableViewCell.SelectionStyle.none
Naval Hasan

5

Đặt kiểu Lựa chọn TableView thành .noneđang ảnh hưởng đến khả năng phản hồi và hiệu suất của chế độ xem bảng trong ứng dụng của tôi (các didSelectRowAt indexPathlần nhấn đang bị chậm lại). Giải pháp của tôi cho vấn đề này là ẩn chế độ xem nền đã chọn awakeFromNib()khi ô được tạo lần đầu tiên:

selectedBackgroundView?.isHidden = true


4

Hãy thử cái này cho nhanh

cell?.selectionStyle = UITableViewCellSelectionStyle.None

2

Làm điều đó trong ô :

class YourCell:  UITableViewCell {
    
    override func didMoveToSuperview() {
        selectionStyle = .none
    }

    ...
}

Nó là dễ dàng.


0

nhanh chóng 5

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
        cell.selectionStyle = .none

        return cell
    }  

0

câu trả lời đúng phải là:

cell.selectedBackgroundView?.backgroundColor = <choose your color>

Loại lựa chọn là một thuộc tính khác khi được thiết lập để .nonetạo ra những gì bạn muốn CỘNG các tác dụng phụ không mong muốn khác.

Nếu bạn không muốn ô được đánh dấu , hãy làm cho màu của chế độ xem nền của nó giống như khi nó không được đánh dấu.

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.