2010-09-14 13 views
9

Mam UITableView, który używa różnych niestandardowych UITableViewCells.Zmień separator UITableViewColor dla pojedynczego UITableViewCell

Chciałbym mieć jedną z tych komórek tabeli z innym kolorem separatora niż pozostałe komórki.

Wiem, że tableview.seperatorColor aktualizuje cały . Czy brakuje mi konkretnej właściwości komórki lub innego podejścia do tego?

Dzięki za wszelkie wskazówki. Przepraszam, jeśli mam odstępy od czegoś w klasie UITableViewCell.

Odpowiedz

9

Zrzeczenie się odpowiedzialności - w przypadku moich szczególnych okoliczności zadziałało na mnie w czasie. Nie ma gwarancji, że działa, wydaje się, że przestała działać, a ja teraz doradzam podklasę UITableViewCell.

Natknąłem tego postu, kiedy chce ustawić UITableView.separatorColor różnie w różnych grupach/sekcji zgrupowane UITableView.

Niekoniecznie potrzebujesz podklasy UITableViewCell. Możesz spróbować ustawić tableView.separatorColor dla każdego połączenia pod numerem tableView:cellForRowAtIndexPath:.

Na przykład, jeśli chcesz, aby separator był widoczny z domyślnym kolorem w pierwszej sekcji, widocznym w pierwszym wierszu/komórce drugiej sekcji, a niewidoczny w pozostałych wierszach w drugiej sekcji, możesz można wykonać następujące czynności:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
switch (indexPath.section) { 
    case 0: 
     tableView.separatorColor = nil; 
     break; 
    case 1: 
     switch (indexPath.row) { 
      case 0: 
       tableView.separatorColor = nil; 
       break; 
      case 1: 
       tableView.separatorColor = [UIColor clearColor]; 
       break; 
      default: 
       break; 
     } 
     break; 
    default: 
     break; 
} 
+0

Super interesujące. Doceniam, że to zaktualizowałeś. Skończyło mi się instalowanie własnych separatorów w mojej celi, ale wygląda to bardzo obiecująco i dam ci szansę. Domyślam się, że wartość jest sprawdzana za każdym razem, gdy uitablecell jest konfigurowany, więc żaden efekt perfekcyjny po prostu go nie zmienia. – Nick

+0

Miałem okazję ponownie zmierzyć się z tym problemem w innym widoku tabeli.To podejście działa i pozwala uniknąć konieczności tworzenia własnego separatora dla każdej komórki. – Nick

+6

To nie działa dla mnie w systemie iOS SDK 4.3. Kiedy go wypróbuję, separatory będą migotać podczas przewijania i staną się losowo widoczne po zatrzymaniu przewijania. –

7

Numer tableView.separatorColor jest globalny dla wszystkich komórek.

Jeśli chcesz jeszcze bardziej dostosować te kolory, najlepiej będzie ustawić właściwość separatorStyle na UITableViewCellSeparatorStyleNone i zastąpić UITableViewCell.

Następnie można narysować własny niestandardowy separator w contentView z Cell i dostosować go.

3

Wychodząc z iOS 7 coś takiego wydaje się działać prawidłowo:

  1. Ustaw UITableViewCellSeparatorStyleSingleLine na UITableView
  2. dla komórki, które chcesz zmienić kolor najpierw ukryć separator separator poprzez zmianę Wstawki cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, 10000);
  3. zmienić kolor tła komórki, które powinny mieć inny kolor separatora cell.backgroundColor = [UIColor greenColor];

Teraz separator mieć taki sam kolor jak backgroundColor swojej komórki. Zauważ, że wszystko to można ustawić w pliku Xib twojej komórki bez żadnego kodu. Zauważ też, że prawdopodobnie chcesz zmienić kolor tła komórki w contentView na coś innego niż domyślne (prawdopodobnie białe), więc zielony kolor pojawi się tylko w linii separatora.

Powiązane problemy