Ich bin neu zu diesem so bitte bitte mit mir:Wie erhalte ich eine benutzerdefinierte UITableViewCell-Klasse, die in IB erstellt wurde, um sie in ein UITableView zu laden?
Ich habe eine .xib in IB mit einem UIScrollView, die eine UITableView eingebettet hat. Ich möchte benutzerdefinierte UITableViewCells in die UITableView laden. Ich habe vier/fünf benutzerdefinierte Zellen in IB erstellt, kann aber nicht die erste korrekt laden.
sind hier relevant Screenshots von IB:
ich die Klasse für die benutzerdefinierte festgelegt haben UITableViewCell in IB der UITableView Klasse erstellt habe ich "itemCell" genannt. Zusätzlich habe ich die drei Textfelder Outlets und Delegates mit "itemCell" verbunden. Hier
ist itemCell.h:
#import <UIKit/UIKit.h>
@interface itemCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UITextField *quantityTextField;
@property (weak, nonatomic) IBOutlet UITextField *itemTextField;
@property (weak, nonatomic) IBOutlet UITextField *priceTextField;
@end
Hier ist itemCell.m:
#import "itemCell.h"
@implementation itemCell
@synthesize quantityTextField,itemTextField,priceTextField;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
In filecontroller.m, das ist die rootcontroller .xib Implementierung Datei ich eine neue Zelle erstellen, basierend auf der Benutzer drückt eine Schaltfläche (fügen Sie es zu einem Array hinzu) und laden Sie dann die Tabellenansicht neu. Ich bekomme keine Fehler, aber ich bekomme eine normale Zelle geladen, anstatt was ich in IB erstellt habe. Hier ist rootcontroller.m. Jede Hilfe wird geschätzt.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
scrollView =(UIScrollView *)self.view;
items = [[NSMutableArray alloc] init];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [items count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
return [items objectAtIndex:[indexPath row]];
}
- (UITableViewCell *)initiateNewCell{
itemCell *cell = [[itemCell alloc] init];
cell.accessoryType = UITableViewCellAccessoryNone;
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
return cell;
}
- (IBAction)addItem:(id)sender {
//creates the new cell to be added
[items addObject:[self initiateNewCell]];
[self.tableView reloadData];
Werden diese benutzerdefinierten Zellen wiederverwendet (mehrfach angezeigt) oder nur einmal in Ihrem UITableView verwendet? Auch UITableView ist auf einem UIScrollView aufgebaut, so dass ich in Ihrer Situation nicht glaube, dass Sie ein UITableView in ein UIScrollView einfügen müssen. – thedeveloper3124
Diese benutzerdefinierten Zellen werden mehrmals angezeigt. Jedes Mal, wenn der Benutzer auf die Schaltfläche zum Hinzufügen klickt, wird idealerweise eine neue Zeile erstellt, und die benutzerdefinierte Zelle füllt sie. Ich denke mein Problem könnte im IB liegen. Ich habe eine UITableViewCell außerhalb eines Viewcontrollers erstellt. Sollte es innerhalb des Viewcontrollers oben sein oder ist das noch relevant? Danke für die Infos zum Scrollview. – IkegawaTaro
Nur eine Anmerkung, dass Klassennamen immer mit einem Großbuchstaben beginnen sollten, um den Standardnamenskonventionen zu folgen, also sollte es wirklich "ItemCell" sein. Sie sollten jedoch auch einen aussagekräftigeren Namen verwenden. –