Przechodzę od dostosowywania moich TableViewCells w tableView:cellForRow:atIndexPath:
do korzystania z niestandardowej podklasy UITableViewCell
. Oto, jak to zrobiłem:registerNib: forReuseidentifier z niestandardowymi UTTableViewCell i Komiksami
Najpierw utworzyłem pusty XIB, przeciągnąłem tam UITableViewCell
i umieściłem na nim UILabel
. Utworzono klasę (podklasa UITableViewCell
) iw edytorze właściwości programu Interface Builder ustawiono klasę na MyCell
. Następnie w moim TableViewController, umieścić następujące:
- (void)viewDidLoad
{
[super viewDidLoad];
// load custom cell
UINib *cellNIB = [UINib nibWithNibName:@"MyCell" bundle:nil];
if (cellNIB)
{
[self.tableView registerNib:cellNIB forCellReuseIdentifier:@"MyCell"];
} else NSLog(@"failed to load nib");
}
Potem wymazane wszystkie niestandardowego kodu z tableView:cellForRow:atIndexPath:
i pozostawione tylko standardowe linie:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCell";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
return cell;
}
Kiedy wpadłem to, jak oczekiwano zobacz grupę komórek z pojedynczą etykietą w każdej komórce (sama etykieta, którą upuściłem w środku podczas tworzenia XIB). Zamiast tego widzę tylko zwykłe białe puste komórki i dodawanie/usuwanie komponentów do układu XIB nie pomaga.
Spędziłem DZIEŃ próbując różnych opcji, takich jak ustawienie reuseIdentifier w Konstruktorze interfejsów dla niestandardowej komórki XIB i ładowanie widoku w tableView:cellForRow:atIndexPath:
, ale nic nie pomogło.