Próbuję dowiedzieć się, jak ustawić, UITableViewCellStylegdy używam nowych metod w iOS 6 dla UITableView.
Wcześniej podczas tworzenia wyliczenia UITableViewCellzmieniałem UITableViewCellStylewyliczenie, aby podczas wywoływania utworzyć różne typy komórek domyślnych, initWithStyle:ale z tego, co mogę zebrać, już tak nie jest.
Dokumentacja Apple dla UITableViewstanów:
Wartość zwracana: obiekt UITableViewCell ze skojarzonym identyfikatorem ponownego wykorzystania. Ta metoda zawsze zwraca prawidłową komórkę.
Dyskusja : ze względu na wydajność źródło danych widoku tabeli powinno zasadniczo ponownie wykorzystywać obiekty UITableViewCell, gdy przypisuje komórki do wierszy w swojej metodzie tableView: cellForRowAtIndexPath:. Widok tabeli przechowuje kolejkę lub listę obiektów UITableViewCell, które źródło danych oznaczyło do ponownego użycia. Wywołaj tę metodę z obiektu źródła danych, gdy zostaniesz poproszony o podanie nowej komórki dla widoku tabeli. Ta metoda usuwa z kolejki istniejącą komórkę, jeśli jest dostępna, lub tworzy nową na podstawie poprzednio zarejestrowanej klasy lub pliku nib.
Ważne : Przed wywołaniem tej metody należy zarejestrować klasę lub plik nib przy użyciu metody registerNib: forCellReuseIdentifier: lub registerClass: forCellReuseIdentifier:.
Jeśli zarejestrowano klasę dla określonego identyfikatora i trzeba utworzyć nową komórkę, ta metoda inicjuje komórkę, wywołując jej metodę initWithStyle: reuseIdentifier:. W przypadku komórek opartych na końcówkach 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ę prepaid komórki.
Oto jak cellForRowAtIndexPathwygląda mój nowy po wdrożeniu nowych metod:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"cell_identifier";
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellIdentifier];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
return cell;
}
Kod, który mam do tej pory, działa dobrze, ale zawsze zwraca domyślny styl. Jak mogę to zmienić, więc mogę utworzyć komórki z innych stylów, takich jak UITableViewCellStyleDefault, UITableViewCellStyleValue1, UITableViewCellStyleValue2i UITableViewCellStyleSubtitle?
Nie chcę podklasy UITableViewCell, chcę po prostu zmienić domyślny typ, tak jak mogłem to zrobić przed iOS 6. Wydaje się dziwne, że Apple zapewnia ulepszone metody, ale z minimalną dokumentacją wspierającą ich implementację.
Czy ktoś to opanował lub napotkał podobny problem? W ogóle staram się znaleźć jakiekolwiek rozsądne informacje.
UITableViewCellcelu uzyskania innych domyślnych stylów jest uciążliwa, ponieważ tworzy po prostu niepotrzebne pliki. Dziękuję za komentarz i potwierdzenie moich podejrzeń.