Hier ist, wie es gemacht wird. Ich glaube, der richtige Weg. Es funktioniert auf Ipad und Iphone, als ich es getestet habe. Wir müssen unsere eigenen customCells erstellen, indem wir eine uitableviewcell klassifizieren:
Starten Sie in interfaceBuilder ... erstellen Sie einen neuen UIViewcontroller, nennen Sie ihn customCell (melden Sie sich freiwillig für eine xib an, während Sie dort sind). Stellen Sie sicher, dass customCell eine Unterklasse von uitableviewcell ist
Löschen Sie jetzt alle Ansichten und erstellen Sie eine Ansicht, um die Größe einer einzelnen Zelle zu erhalten. Machen Sie diese Ansicht Unterklasse benutzerdefinierte Zelle. Erstellen Sie nun zwei weitere Ansichten (duplizieren Sie die erste).
Gehen Sie zu Ihrem Verbindungsinspektor und suchen Sie 2 IBOutlets, mit denen Sie jetzt eine Verbindung zu diesen Ansichten herstellen können.
-backgroundView -SelectedBackground
Verbinden Sie diese mit den letzten beiden Ansichten, die Sie gerade dupliziert haben, und sorgen Sie sich nicht um sie. Fügen Sie in der allerersten Ansicht, die customCell erweitert, Ihr Label und Ihr uitextfield ein. bin in customCell.h eingestiegen und verbinde dein Label und dein Textfeld. Stellen Sie die Höhe dieser Ansicht auf 75 (Höhe jeder Zelle) ein.
Stellen Sie in Ihrer customCell.m-Datei sicher, dass der Konstruktor ungefähr so aussieht:
- (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;
}
Erstellen Sie nun einen UITableViewcontroller und verwenden Sie in dieser Methode die customCell-Klasse wie folgt:
- (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;
}