Jestem nowy w tym celu, proszę o zebranie:Jak uzyskać niestandardową klasę UITableViewCell utworzoną w IB, aby załadować do UITableView?
Mam. XIB w IB zawierający UIScrollView, który ma osadzony w nim UITableView. Chciałbym załadować niestandardowe UITableViewCells do UITableView. Mam cztery/pięć niestandardowych komórek utworzonych w IB, ale nie mogę uzyskać pierwszego, który poprawnie się załaduje.
Oto odpowiednie screeny z IB:
mam ustawić klasę na niestandardowej UITableViewCell utworzonego w IB do klasy UITableView stworzyłem nazwie "itemCell". Dodatkowo połączyłem trzy pola tekstowe i delegatów do "itemCell".
Oto 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
Oto 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
W filecontroller.m, który jest plik wdrażania rootcontroller .xib za utworzyć nową komórkę w oparciu o użytkownik naciska przycisk (dodaje go do tablicy), a następnie ponownie ładuje widok tabeli. Nie otrzymuję żadnych błędów, ale otrzymuję raczej normalną komórkę niż to, co stworzyłem w IB. Tutaj jest rootcontroller.m. Każda pomoc jest doceniana.
- (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];
Czy te niestandardowe komórki będą ponownie używane (wyświetlane wiele razy) lub używane tylko raz w swoim widoku UITableView? Również UITableView jest zbudowany na UIScrollView, więc w twojej sytuacji nie myślę, że istnieje potrzeba umieszczenia UITableView wewnątrz UIScrollView. – thedeveloper3124
Te niestandardowe komórki będą wyświetlane wiele razy. Za każdym razem, gdy użytkownik kliknie przycisk Dodaj, idealnie nowy wiersz zostanie utworzony, a niestandardowa komórka zapełni go. Myślę, że mój problem może leżeć w IB. Stworzyłem UITableViewCell poza kontrolerem viewcontroller. Powinien on znajdować się wewnątrz kontrolera viewcontroller powyżej lub jest to nieistotne. Dziękuję za informacje na temat przewijania. – IkegawaTaro
Po prostu zwróć uwagę, że nazwy klas powinny zawsze zaczynać się od dużej litery, zgodnie ze standardowymi konwencjami nazewnictwa, więc naprawdę powinno to być "ItemCell". Prawdopodobnie jednak warto rozważyć bardziej opisową nazwę. –