Sono nuovo per questo motivo, per favore portami con me:Come ottenere una classe UITableViewCell personalizzata creata in IB da caricare in un UITableView?
Ho un file .xib in IB contenente un UIScrollView che ha un UITableView incorporato in esso. Vorrei caricare UITableViewCells personalizzati in UITableView. Ho quattro/cinque celle personalizzate create in IB ma non riesco a caricare il primo correttamente.
Qui ci sono le immagini di rilevanti da IB:
ho impostato la classe per l'usanza UITableViewCell creato in IB alla classe UITableView ho creato chiamato "itemCell". Inoltre, ho collegato i tre campi di testo e i delegati a "itemCell".
Ecco 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
Ecco 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, che è file di implementazione del .xib rootcontroller creo una nuova cella sulla base di l'utente che preme un pulsante (aggiungilo a un array) e quindi ricarica la vista tabella. Non ricevo errori, ma sto caricando una normale cella piuttosto che ciò che ho creato in IB. Qui è rootcontroller.m. Qualsiasi aiuto è apprezzato.
- (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];
Queste celle personalizzate verranno riutilizzate (visualizzate più volte) o utilizzate una sola volta all'interno di UITableView? Anche UITableView è costruito su un UIScrollView, quindi nella tua situazione non credo ci sia bisogno di mettere un UITableView all'interno di un UIScrollView. – thedeveloper3124
Queste celle personalizzate verranno visualizzate più volte. Ogni volta che l'utente preme il pulsante Aggiungi, idealmente viene creata una nuova riga e la cella personalizzata lo popola. Penso che il mio problema potrebbe risiedere nell'IB. Ho creato un UITableViewCell al di fuori di un viewcontroller. Dovrebbe essere all'interno del viewcontroller di cui sopra o non è rilevante. Grazie per le informazioni sullo scrollview. – IkegawaTaro
Solo una nota che i nomi di classe dovrebbero sempre iniziare con una lettera maiuscola per seguire le convenzioni di denominazione standard, quindi dovrebbe essere davvero 'ItemCell'. Tuttavia, probabilmente vorrai anche considerare un nome più descrittivo. –