2013-04-23 6 views
7

Tak więc patrzyłem na użycie UITableView'sregisterNib: i [dequeueReusableCellWithIdentifier: forIndexPath:] do załadowania niestandardowego UITableCellView z NIB. Oto ważne bitów z mojego kontrolera:Jak przypisać właściciela pliku przy użyciu UITableView registerNib: załadować niestandardową UITableViewCell ze stalówki?

- (void)viewDidLoad 

[super viewDidLoad]; 
self.tableView.bounces = NO; 
[self.tableView registerNib:[UINib nibWithNibName:@"ProgramListViewCell" bundle:nil] forCellReuseIdentifier:@"Cell"]; 



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

TVProgramListTableViewCell *cell = (TVProgramListTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 

cell.frame = CGRectMake(0, 0, CELLWIDTH, OPENCELLHEIGHT); 
cell.selectionStyle = UITableViewCellSelectionStyleNone; 
cell.clipsToBounds = YES; 

cell.titleLabel.text = [NSString stringWithFormat:@"herpa derp: %i", indexPath.row]; 

return cell; 

więc jestem rejestracji NIB gdy widok ładuje i następnie wykorzystanie go do zdejmującą z kolejki komórkowej. Do tego momentu wszystko działa tak, jak tego oczekuję. Mój zwyczaj TVProgramListTableViewCell jest poprawnie ładowany z NIB i jest on podłączony do sieci.

NIB zawiera widok z przyciskiem, który chciałbym mieć zdarzenia pożarowe do kontrolera. Mogę ustawić typ właściciela pliku jako moją klasę kontrolera widoku tabeli, ale nie wiem, jak faktycznie podłączyć właściciela pliku.

Teraz, jeśli używałem loadNibNamed:, i samemu ładując NIB, okablowanie Właściciela pliku byłoby łatwe. Czy jest jakiś sposób osiągnięcia tego przy użyciu registerNib? Poza tym, że nie można podłączyć Właściciela pliku, wydaje się, że jest to doskonały sposób na użycie niestandardowych komórek w numerze UITableView.

Odpowiedz

2

O ile mi wiadomo, nie ma sposobu, aby ustawić właściciela pliku na kontroler widoku tabeli i połączyć metodę akcji z przyciskiem w pliku xib - próbowałem tego i powoduje awarię aplikacji. Zazwyczaj jest to wywołanie metody addTarget: action: forControlEvents: na przycisku w metodzie cellForRowAtIndexPath i przekazuj self jako cel.

+1

Tak, wróciłem do używania loadNibNamed: gdy komórka jest odrywana. To pozwala mi ustawić właściciela na mój kontroler, a także uzyskać IBOutlets w mojej komórce niestandardowej. Więc nie ma potrzeby wywoływania addTarget, ponieważ mogę powiązać zdarzenie przycisku z właścicielem pliku w IB i zostanie on przekierowany do kontrolera, a jednocześnie mapować moje UIViews do gniazd w mojej niestandardowej UITableViewCell. –

+0

@VilleRinne, myślę, że rejestracja stalówki jest bardziej wydajna (dlatego Apple ją wprowadziła) niż ładowanie stalówki dla każdej tworzonej komórki. – rdelmar

+0

Tak, może być bardziej wydajny, ale nie jest zbyt użyteczny, jeśli nie możesz powiązać kontrolera z właścicielem pliku stalówki? Czy efektywność jest tak czy inaczej problemem, skoro stalówka jest ładowana tylko wtedy, gdy nie można odjąć komórki? –

Powiązane problemy