Usuń kolor podświetlenia komórki UITableView

110

Chcę usunąć domyślny niebieski kolor zaznaczenia komórek uitableview. Nie chcę tam żadnego koloru wyboru. Nie utworzyłem niestandardowej klasy komórek. Dostosowuję komórkę, dodając nad nią etykiety i przyciski. Próbowałem zrobić:

cell.selectioncolor = [UIColor clearcolor];

ale mówi, że ta metoda jest przestarzała.

neha
źródło

Odpowiedzi:

323
cell.selectionStyle = UITableViewCellSelectionStyleNone;

w Swift 4 zaktualizowany

cell.selectionStyle = UITableViewCell.SelectionStyle.none

Lub

cell.selectionStyle = .none
Vladimir
źródło
3
Zachowałem ten kod w cellForRowAtIndexPath:, czy to jest dokładne miejsce do zachowania?
Pawriwes
9
@Pawriwes, tak. Jeśli dobrze pamiętam, możesz również ustawić tę właściwość w XIB komórki, jeśli utworzysz komórkę za pomocą Interface Builder
Vladimir
4
Jeśli to zrobię, podczas edycji nie zaznaczam komórki :(
AsifHabib
54

Wybierz to w StoryboardlubXIB


wprowadź opis obrazu tutaj

Michael
źródło
7
dodatkowo, musisz zaznaczyć „ Komórka widoku tabeli ”, jeśli zmienisz „widok tabeli” niż nie zaznaczasz komórek.
Kernelzero
2
@Pulkit to nieprawda. Spowoduje to wyłączenie tylko stanu zaznaczenia komórki. Nie ma to nic wspólnego z wyświetlanymi w nim danymi ani z obsługą ich interakcji. Sprawdź, czy masz wszystkie odpowiednie ustawienia rejestracji i nie przesłaniasz innych funkcji.
Michael
to jest całkowicie błędne
Fattie
12
// Swift 2.0

cell.selectionStyle = UITableViewCellSelectionStyle.None
Joey Wong
źródło
5
Lub możesz użyć bezpośrednio wartości wyliczenia cell.selectionStyle = .None
Steve
11

Swift 3.0

cell.selectionStyle = .none
Rashwan L.
źródło
6

Cel C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

lub

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Swift 4:

self.selectionStyle = UITableViewCellSelectionStyle.none;

Swift 3:

cell.selectionStyle = .none

Swift 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Jeśli chcesz to zmienić, używając tylko Storyboard / Xib, po prostu wybierz komórkę, z której chcesz usunąć „Efekt stylu wyboru” i zdefiniuj ją jako „Brak”. To też zadziała jak magia: D

Storyboard / Xib

Frantiesco Masutti
źródło
1
Swift 4: cell.selectionStyle = UITableViewCell.SelectionStyle.none
Naval Hasan
5

Ustawienie stylu wyboru .nonewidoku tabeli na wpłynęło na czas reakcji i wydajność widoku tabeli w mojej aplikacji ( didSelectRowAt indexPathstuknięcia były opóźnione). Moim rozwiązaniem tego problemu było ukrycie wybranego widoku tła awakeFromNib()podczas pierwszego tworzenia komórki:

selectedBackgroundView?.isHidden = true

lynchspin
źródło
4

Spróbuj tego szybko

cell?.selectionStyle = UITableViewCellSelectionStyle.None
Jugal K Balara
źródło
2

Zrób to w celi :

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

    ...
}

To jest takie proste.

Fattie
źródło
0

szybki 5

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

        return cell
    }  
Zgpeace
źródło
0

prawidłowa odpowiedź powinna brzmieć:

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

Typ wyboru to inna właściwość, która gdy jest ustawiona na .nonedaje to, czego chcesz ORAZ inne niepożądane efekty uboczne.

Jeśli nie chcesz komórka być podświetlone , a następnie dokonać kolor swojego tle widok na samo jak wtedy, gdy jest nie podświetlona.

anr
źródło