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.


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

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


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



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
    }

}

6

w swift 3

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

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)
}

1

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

cell.selectionStyle = UITableViewCellSelectionStyle.none


1

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


0

Dla Objc:

[komórka setSelectionStyle: UITableViewCellSelectionStyleNone];

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


-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
}()
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.