wyłącz podświetlanie uitableview, ale zezwól na wybór pojedynczych komórek

83

po dotknięciu komórki wiersz zostanie zaznaczony i podświetlony.Teraz chcę wyłączyć podświetlenie, ale zezwolić na wybór.Czy istnieje sposób na obejście tego.Jest pytanie, które odpowiada na to, ale wyłącza zarówno zaznaczanie, jak i podświetlanie.

żołnierz
źródło
8
cell.selectionStyle = UITableViewCellSelectionStyleNone;dodaj to do swojej cellForRowAtIndexPathmetody
Shruti

Odpowiedzi:

182

Możesz po prostu ustawić styl zaznaczenia komórki na „Brak” w Storyboard:

Spójrz tutaj

Lub z kodu:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Dla Swift 3:

cell.selectionStyle = UITableViewCellSelectionStyle.none

Swift 4 i nowszy:

cell.selectionStyle = .none
József Vesza
źródło
Kiedy wybieram „none”, tracę możliwość pracy w stanie podświetlenia. Czy mogę ustawić tło bez / białe bez utraty tego stanu?
Sean,
W jakiej funkcji miałoby to działać? Zgaduję "cellForRowAt"?
Daniel Springer
Powinieneś to zrobić w celi, a nie w widoku tabeli
Salem Binmusaed
26

Zmień UITableViewCell„s selectedBackgroundViewkolor przezroczysty.

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

lub ustawić dla określonej komórki:

cell.backgroundView = clearView

tounaobun
źródło
1
To najlepsza opcja, ponieważ cell.selectionStyle = UITableViewCellSelectionStyleNoneczasami coś głęboko narusza logikę animacji Jabłka.
orkenstein
następnie użyj zamiast tego ..UITableViewCell.appearance().selectionStyle = .None
vaibhav
Jest to przyjemne w użyciu, jeśli w komórce znajdują się elementy do wyboru.
Matthew Korporaal
Doskonałe rozwiązanie. Umieszczenie tego kodu w funkcji komórki to nie awakeFromNib()
lada
Ta opcja sprawia, że ​​linia separatora komórek w widoku tabeli nie jest widoczna.
jonye ._. Jin
8

Spróbuj ustawić styl zaznaczania komórek na Brak -

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

To rozwiąże twój problem

Żmija
źródło
8

Dla Swift 3.0 :

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

Dla Swift:

UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;

Lub kiedy podklasujesz komórkę w szybkim:

class CustomCell : UITableViewCell {

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

}
Melvin
źródło
6

w swift 3

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
}
Sai kumar Reddy
źródło
2

Aby dodać własny kolor, użyj poniższego kodu. I aby był przezroczystyalpha: 0.0

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

Jeśli używasz niestandardowego koloru i chcesz nadać mu wygląd zaokrąglonych rogów, użyj:

cell.layer.cornerRadius = 8

Użyj tego również dla lepszej animacji i wrażenia

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

    tableView.deselectRow(at: indexPath, animated: true)
}
Prateekro
źródło
1

Dla tych, którzy szukają automatyzacji w Swift 3

cell.selectionStyle = UITableViewCellSelectionStyle.none

Danoram
źródło
1

Możesz ustawić właściwość zaznaczenia samej komórki w serii ujęć wprowadź opis obrazu tutaj

MNIE
źródło
0

Dla Objc:

[komórka setSelectionStyle: UITableViewCellSelectionStyleNone];

- (void)viewDidLoad {
  [super viewDidLoad];
  _tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    .. .. .. .. 
   [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
   . . . . .. 
}
Lakhdeep Singh
źródło
0

W przypadku Swift 5 najlepszym sposobem jest:

cell.selectionStyle = .none
ramzesenok
źródło
-1

Oto rozwiązanie dla swift 3, działa nawet w trybie edycji

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
}()
DukeX
źródło