2013-03-06 7 views
12

Próbuję użyć niestandardowej podklasy UITableViewCell o stylu ustawionym na UITableViewCellStyleSubtitle i używam jej z registerClass:forCellReuseIdentifier:. Jednak nie jestem pewien, jak to zrobić.Podczas rejestrowania UITableViewCell do ponownego użycia, która metoda init na tej komórce zostanie wywołana?

Moje myślenie było zastąpić metodę init i nazywają

self = [super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:myReuseIdentifier]; 

wewnątrz niej. Jednak nie mogę dowiedzieć się, która metoda jest wywoływana (lub czy jest to nawet właściwy sposób).

Próbowałem przechwycić wszystkie poniższe metody inicjowania, ale żaden z nich nie wydaje się za właściwą podczas usuwania komórek:

  • init
  • initWithCoder
  • initWithFrame

Potwierdziłem, że dequeueReusableCellWithIdentifier:forIndexPath: zwraca komórkę odpowiedniego typu, więc wiem, że jest tworzona. Po prostu nie wiem, która metoda init jest wywoływana, więc nie mogę ustawić domyślnego stylu.

Odpowiedz

31

Wierzę, że wywołuje initWithStyle: reuseIdentifier: dla init komórki tabeli.

Od docs jabłoni

dequeueReusableCellWithIdentifier:

Jeśli zarejestrowałeś klasę dla określonego identyfikatora i nowej komórki musi zostać utworzony, metoda ta inicjuje komórkę przez wywołanie initWithStyle: reuseIdentifier: metody . W przypadku komórek opartych na nib, ta metoda ładuje obiekt komórki z dostarczonego pliku nib. Jeśli istniejąca komórka była dostępna do ponownego użycia, ta metoda wywołuje zamiast niej metodę prepareForReuse komórki.

J

+0

Tak, okazało się, że po tym, jak pisał go. Oznaczanie jako odpowiedź w dobrym obywatelstwie S/O. – MarqueIV

Powiązane problemy