Stworzyłem zwyczaj UITableViewCell
. Widok tabeli pokazuje dane w porządku. Utknąłem w momencie, gdy użytkownik dotyka komórki widoku tabeli, a następnie chcę pokazać kolor tła komórki inny niż domyślne wartości [koloru niebieskiego] dla podświetlenia wyboru komórki. Używam tego kodu, ale nic się nie dzieje:
cell.selectedBackgroundView.backgroundColor=[UIColor blackColor];
Nie ma potrzeby tworzenia niestandardowych komórek. Jeśli chcesz tylko zmienić wybrany kolor komórki, możesz to zrobić:
Cel C:
Szybki:
źródło
Widok tabeli Kolor tła wyboru komórki można ustawić za pomocą Scenorysu w Konstruktorze interfejsów:
źródło
Jeśli masz zgrupowaną tabelę z tylko jedną komórką na sekcję, po prostu dodaj ten dodatkowy wiersz do kodu:
bgColorView.layer.cornerRadius = 10;
Nie zapomnij zaimportować QuartzCore.
źródło
Swift 3: dla mnie zadziałało, gdy umieściłeś to w
cellForRowAtIndexPath:
metodzieźródło
awakeFromNib()
metoda (w przypadku niestandardowej komórki).Poniższe działa dla mnie w iOS 8.
Muszę ustawić styl wyboru na
UITableViewCellSelectionStyleDefault
na, aby działał niestandardowy kolor tła. Jeśli jakikolwiek inny styl, niestandardowy kolor tła zostanie zignorowany. Wygląda na to, że nastąpiła zmiana w zachowaniu, ponieważ poprzednie odpowiedzi muszą zamiast tego ustawić styl na none.Pełny kod komórki w następujący sposób:
źródło
Utwórz niestandardową komórkę dla komórki tabeli i w niestandardowej klasie komórek. M umieść poniższy kod, będzie działał dobrze. Musisz umieścić żądany kolorowy obraz w
selectionBackground
UIImage.źródło
Rozszerzenie Swift 3.0
cell.selectionColor = UIColor.FormaCar.blue
źródło
@IBInspectable
var, jeśli chcesz.@IBDesignable
nie jest do tego przydatny.W tej metodzie musimy ustawić wybrany widok tła.
źródło
Jeśli chcesz dodać niestandardowy podświetlony kolor do komórki (a komórka zawiera przyciski, etykiety, obrazy itp.), Wykonałem następujące kroki:
Na przykład, jeśli chcesz wybrać żółty kolor:
1) Utwórz widok, który pasuje do całej komórki o kryciu 20% (z żółtym kolorem), na przykład wybrany w tle
2) Napisz w kontrolerze komórki:
źródło
W Swift 4 możesz także globalnie ustawić kolor tła komórki tabeli (zaczerpnięty stąd ):
źródło
Jeśli używasz niestandardowego TableViewCell, możesz również zastąpić
awakeFromNib
:źródło
Jeszcze jedna wskazówka na temat sposobu, w jaki Christian pokazuje tło z zaokrąglonym rogiem dla zgrupowanego stołu.
Jeśli użyję
cornerRadius = 10
komórki, pokazuje zaokrąglone tło zaznaczenia czterech rogów. Nie jest tak samo z domyślnym interfejsem użytkownika widoku tabeli.Myślę więc o łatwym sposobie rozwiązania tego problemu za pomocą cornerRadius . Jak widać z poniższych kodów, sprawdź lokalizację komórki (górny, dolny, środkowy lub górny spód) i dodaj jeszcze jedną warstwę podrzędną, aby ukryć górny róg lub dolny róg. To pokazuje dokładnie taki sam wygląd z domyślnym tłem wyboru widoku tabeli.
Testowałem ten kod na iPadzie
splitterview
. Możesz zmienić pozycję ramki patchLayer według potrzeb.Daj mi znać, jeśli istnieje łatwiejszy sposób na osiągnięcie tego samego rezultatu.
źródło
Chcę zauważyć, że edytor XIB oferuje następujące standardowe opcje:
Sekcja: niebieski / szary / brak
(prawa kolumna z opcjami, 4. zakładka, pierwsza grupa „Komórka widoku tabeli”, 4. podgrupa, 1. z 3 pozycji brzmi „Wybór”)
Prawdopodobnie to, co chcesz zrobić, można osiągnąć, wybierając odpowiednią opcję standardową.
źródło
Jak na niestandardowym kolorze dla wybranej komórki
UITableView
, świetne rozwiązanie, jak na Macieja Swic za odpowiedźAby dodać do tego, deklarujesz odpowiedź Swica w konfiguracji Komórki zwykle pod:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Aby uzyskać dodatkowy efekt, zamiast kolorów systemowych, można użyć wartości RGB w celu uzyskania niestandardowego wyglądu kolorów. W moim kodzie tak to osiągnąłem:
Daj mi znać, jeśli to również zadziała. Możesz zadzierać z
cornerRadius
liczbą efektów w rogach wybranej komórki.źródło
Mam nieco inne podejście niż wszystkie inne, które odzwierciedla wybór na dotyk, a nie po wybraniu. Mam podklasę UITableViewCell. Wszystko, co musisz zrobić, to ustawić kolor tła w zdarzeniach dotykowych, co symuluje wybór za pomocą dotyku, a następnie ustawić kolor tła w funkcji setSelected. Ustawienie koloru tła w funkcji selSelected pozwala odznaczyć komórkę. Pamiętaj, aby przekazać zdarzenie dotykowe super, w przeciwnym razie komórka nie zachowa się tak, jakby była wybrana.
źródło
Aby dodać tło dla wszystkich komórek (używając odpowiedzi Macieja):
źródło
Aby zastąpić
UITableViewCell
„ssetSelected
również działa.źródło
dla tych, którzy chcą się pozbyć domyślnie wybranego szarego tła, wstaw ten wiersz kodu do swojej funkcji cellForRowAtIndexPath:
źródło
dla Swift 3.0:
źródło
Używam podejścia poniżej i działa dobrze dla mnie,
źródło
Swift 4+:
Dodaj następujące wiersze w komórce tabeli
Wreszcie powinno być jak poniżej
źródło
Oto ważne części kodu potrzebne do zgrupowanej tabeli. Po wybraniu dowolnej komórki w sekcji pierwszy wiersz zmienia kolor. Bez początkowego ustawienia stylu cellselection na none, następuje denerwujące podwójne przeładowanie, gdy użytkownik kliknie wiersz 0, w którym komórka zmienia się na bgColorView, a następnie zanika i ponownie ładuje bgColorView. Powodzenia i daj mi znać, jeśli istnieje prostszy sposób na zrobienie tego.
źródło
W przypadku niestandardowej klasy komórki. Po prostu zastąp:
źródło
Łatwo jest, gdy styl widoku tabeli jest prosty, ale w stylu grupowym to mały problem, rozwiązuję go przez:
zauważyłem kGroupTableViewCellWidth, definiuję go jako 300, jest to szerokość szerokości komórki widoku tabeli grup w iPhonie
źródło
Upewnij się, że użyłeś powyższej linii, aby użyć efektu wyboru
źródło
źródło
Używam iOS 9.3 i ustawianie koloru za pomocą Storyboard lub ustawienie
cell.selectionStyle
nie działało dla mnie, ale poniższy kod działał:Znalazłem to rozwiązanie tutaj .
źródło
Spróbuj obserwować kod.
// Szybka wersja:
źródło
Swift 4.x
Aby zmienić kolor tła zaznaczenia na dowolnyKolor użyj Swift Extension
Utwórz rozszerzenie komórki UITableView jak poniżej
Następnie wywołaj removeCellSelectionColour () z instancją komórki.
źródło