Bu konuda yeniyim, lütfen bana katılın:UITableView'a yüklemek için IB'de oluşturulan özel UITableViewCell sınıfı nasıl edinilir?
IB içinde UITableView içeren bir UIScrollView içeren bir .xib sahibiyim. UITableView'a özel UITableViewCells yüklemek istiyorum. IB'de oluşturulan dört/beş özel hücreye sahibim, ancak doğru şekilde ilk yüklenemedi. İşte
IB alakalı ekran görüntüleri şunlardır:
Ben "itemCell" denilen oluşturulan UITableView sınıfına IB oluşturulan özel UITableViewCell için sınıf belirledik
. Ayrıca, üç metin alanı çıkışını ve delegeleri "itemCell" e bağladım.
#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
İşte
olduğunu itemCell.m: filecontroller.m olarak
#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
, rootcontroller .xib en uygulaması dosyanın ben dayalı yeni bir hücreyi oluşturmak İşte
itemCell.h olduğunu Kullanıcı bir düğmeye basarak (bir diziye ekleyin) ve ardından tablo görünümünü yeniden yükleyin. Hata alıyorum ama IB'de yarattığımın yerine normal bir hücre alıyorum. İşte rootcontroller.m. Herhangi bir yardım takdir edilir. senin- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//This identifier string needs to be set in cell of the TableViewController in the storyboard
static NSString *CellIdentifier = @"Cell";
// Resuse the cell
SomeCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// If there are no cell to be reused we create a new one
if(cell == nil) {
cell = [SomeCustomCell new];
}
// Configure the cell...
NSString *someString = [yourArrayWithStringsOrWhatEver objectAtIndex:indexPath.row];
// Setting the some property of your custom cell
[cell.yourSpecificCellProperty someString];
[cell.yourOtherSpecificCellProperty setText:@"What Ever your want!"];
}
Kişisel hücrenin özelliklerinde
- (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];
Bu özel hücreler yeniden kullanılacak mı (birden çok kez görüntüleniyor) veya yalnızca UITableView'ınızda bir kez mi kullanılıyor? Ayrıca UITableView bir UIScrollView üzerinde yerleşiktir, bu nedenle sizin durumunuzda UIScrollView içine UITableView koymanızın gerekmediğini düşünmüyorum. – thedeveloper3124
Bu özel hücreler, birden çok kez görüntülenecektir. Kullanıcı ekleme düğmesine her bastığında, ideal olarak yeni bir satır oluşturulur ve özel hücre onu doldurur. Bence problemim IB'de olabilir. Görünüm denetleyicisinin dışında bir UITableViewCell oluşturdum. Yukarıdaki kontrolörün içinde mi yoksa o da uygun mu? Scrollview hakkında bilgi için teşekkürler. – IkegawaTaro
Sınıf isimlerinin standart adlandırma kurallarına uymak için her zaman büyük harfle başlaması gerektiğini unutmayın, bu yüzden 'ItemCell' olmalıdır. Ancak, muhtemelen daha açıklayıcı bir isim düşünmek istersiniz. –