Oto, jak to się robi, uważam, że to właściwy sposób. Działa na iPadzie i iPhonie podczas testowania. Musimy stworzyć własne komórki niestandardowe, klasyfikując komórkę uitableviewcell:
zacznij w interfejsieBuilder ... utwórz nowy kontroler UIView nazywaj go customCell (zgłaszaj się na xib, gdy tam jesteś) Upewnij się, że customCell jest podklasą uitableviewcell
usuń teraz wszystkie widoki i utwórz jeden widok, który ma rozmiar pojedynczej komórki. uczyń tę komórkę widoku podklasą niestandardową. teraz utwórz dwa inne widoki (duplikuj pierwszy).
Przejdź do inspektora połączeń i znajdź 2 IBOutlety, które możesz teraz połączyć z tymi widokami.
-backgroundView -SelectedBackground
połącz je z dwoma ostatnimi widokami, które właśnie skopiowałeś i nie martw się o nie. pierwszy widok, który rozszerza customCell, umieść w nim etykietę i pole uitextfield. dostałeś się do customCell.h i podłączyłeś swoją etykietę i pole tekstowe. Ustaw wysokość tego widoku, aby powiedzieć 75 (wysokość każdej komórki) wszystko zrobione.
W pliku customCell.m upewnij się, że konstruktor wygląda mniej więcej tak:
- (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;
}
Teraz utwórz kontroler UITableView iw tej metodzie użyj klasy customCell w następujący sposób:
- (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;
}