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.

Odpowiedzi:


323
cell.selectionStyle = UITableViewCellSelectionStyleNone;

w Swift 4 zaktualizowany

cell.selectionStyle = UITableViewCell.SelectionStyle.none

Lub

cell.selectionStyle = .none

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


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

5
Lub możesz użyć bezpośrednio wartości wyliczenia cell.selectionStyle = .None
Steve


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


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



2

Zrób to w celi :

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

    ...
}

To jest takie proste.


0

szybki 5

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

        return cell
    }  

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.