Ecco come è fatto, credo nel modo corretto. Funziona su Ipad e Iphone mentre l'ho provato. Dobbiamo creare le nostre customCells classificando una uitableviewcell:
inizia in interfaceBuilder ... crea un nuovo UIViewcontroller chiamalo customCell (volontario per uno xib mentre sei lì) Assicurati che customCell sia una sottoclasse di uitableviewcell
cancella ora tutte le viste e crea una vista rendendola delle dimensioni di una singola cella. rendere quella sottoclasse customcell sottoclasse. ora crea altre due viste (duplica la prima).
Vai al tuo ispettore delle connessioni e trova 2 IBOutlet che puoi connettere a queste viste ora.
-backgroundView -SelectedBackground
collegali alle ultime due viste che hai appena duplicato e non preoccuparti per loro. la prima vista che estende customCell, inserisci la tua etichetta e uitext al suo interno. entra in customCell.h e collega l'etichetta e il campo di testo. Imposta l'altezza di questa vista per dire 75 (altezza di ogni cella) tutto fatto.
Nel tuo file customCell.m assicurati che il costruttore assomigli a questo:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
self = [nibArray objectAtIndex:0];
}
return self;
}
Ora crea un UITableViewcontroller e in questo metodo usa la classe customCell in questo modo:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
// lets use our customCell which has a label and textfield already installed for us
customCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
//cell = [[[customCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
NSArray *topLevelsObjects = [[NSBundle mainBundle] loadNibNamed:@"NewUserCustomCell" owner:nil options:nil];
for (id currentObject in topLevelsObjects){
if ([currentObject isKindOfClass:[UITableViewCell class]]){
cell = (customCell *) currentObject;
break;
}
}
NSUInteger row = [indexPath row];
switch (row) {
case 0:
{
cell.titleLabel.text = @"First Name"; //label we made (uitextfield also available now)
break;
}
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 75.0;
}