Quindi ho cercato di utilizzare UITableView's
registerNib:
e [dequeueReusableCellWithIdentifier: forIndexPath:]
per caricare un UITableCellView
personalizzato da NIB
. Qui ci sono i pezzi importanti dal mio controllo:Come assegnare il proprietario del file quando si utilizza UITableView registerNib: per caricare un UITableViewCell personalizzato dal pennino?
- (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;
così sto registrando la NIB
quando i carichi vista e poi lo utilizzano per annullamento dell'accodamento delle cellule. Fino a questo punto tutto funziona come mi aspetto. La mia consueta TVProgramListTableViewCell
viene caricata correttamente da NIB
ed è IBOutlet
collegata.
Il NIB
contiene una vista con un pulsante al suo interno che mi piacerebbe avere eventi di fuoco sul controller. Posso impostare il tipo di proprietario del file come la mia classe Table View Controller ma non so come collegare effettivamente il proprietario del file.
Ora, se stavo usando loadNibNamed:
e caricando me stesso il NIB
, il cablaggio del proprietario del file sarebbe facile. C'è un modo per ottenere questo mentre si utilizza registerNib
? Oltre a non essere in grado di cablare il proprietario del file, questo sembra il modo perfetto di utilizzare celle personalizzate in un UITableView
.
Sì, sono tornato a utilizzare loadNibNamed: quando la cella viene rimossa dalla coda. Questo mi consente di impostare il proprietario sul mio controller e di ottenere gli IBOutlet nella mia cella personalizzata. Quindi non c'è bisogno di chiamare addTarget perché posso associare l'evento button a Owner di File in IB e verrà indirizzato al mio controller mentre sto ancora mappando le mie UIViews alle prese nel mio UITableViewCell personalizzato. –
@VilleRinne, penso che la registrazione del pennino sia più efficiente (motivo per cui Apple l'ha introdotta) rispetto al caricamento del pennino per ogni cella che si crea. – rdelmar
Sì, potrebbe essere più efficiente ma non è molto utile se non è possibile associare il controller al proprietario del pennino del file? L'efficienza è davvero un problema comunque, dal momento che il pennino viene caricato solo ogni volta che una cella non può essere rimossa dalla coda? –