Pytanie jest proste: Jak załadować niestandardowy UITableViewCellz plików XIB? Takie postępowanie pozwala na użycie interfejsu Builder do projektowania swoich komórek. Odpowiedź najwyraźniej nie jest prosta ze względu na kwestie zarządzania bazami pamięci. Wątek wymienia problem i proponuje rozwiązanie, ale jest wstępnie NDA uwalniania i nie ma kod. Oto długi wątek , który omawia kwestię bez podania ostatecznej odpowiedzi.
Oto niektóre kodu użyłem:
static NSString *CellIdentifier = @MyCellIdentifier;
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];
}
Aby użyć tego kodu, tworzenie MyCell.m / .h, nową podklasę UITableViewCelli dodać IBOutletsdo składników, które chcesz. Następnie należy utworzyć nową „Empty XIb” plik. Otwórz plik XIB w IB, dodaj UITableViewCellobiekt, ustaw swój identyfikator do „MyCellIdentifier” i ustawić jego klasę MyCell i dodać składniki. Wreszcie, należy podłączyć IBOutletsdo komponentów. Zauważ, że nie ustawić plik za właściciela w IB.
Inne metody zalecają ustawienie pliku Właścicielem i ostrzegają wycieków pamięci, jeśli XIb nie jest załadowany za pomocą dodatkowej klasy fabrycznej. I badano powyżej w instrumenty / Wycieki i nie widzi przecieków pamięci.
Więc co jest kanoniczny sposób załadować komórki przed Xibs? Czy możemy ustawić plik jest właścicielem? Czy potrzebujemy fabrykę? Jeśli tak, to jaki jest kod na fabryce wyglądać? Jeśli istnieje wiele rozwiązań, niech wyjaśnić zalety i wady każdego z nich ...














