ok, se pare ca a venit randul meu sa pun intrebari, tot referitor la UIViewTable.
Am urmatoarea structura: un Table View ca Root Controller si un Table View child. Codul de la “child” este mai jos (am niște NSLog-uri în text, au doar rolul să mă ajute in debuging, nu le băgați în seamă). View-ul “child” este generat programatic, nu din Nib. Problemele pe care le am sunt 2:
1. View-ul child mi se incarcă corect și îmi afisează primele 9 randuri. Dacă dau scroll in jos, îmi afiseaza corect pană când ajunge la ultimul element al listei de afisat (array-ul listSigns), după care dă eroare in procedura ‘cellForRowAtIndexPath’: variabila “row” nu iese din range (deci ar trebui sa existe [listSigns objectAtIndex:row]), dar tSign se comportă de parcă ar fi nil, de parcă ‘listSigns’ ar fi inexistent/nealocat/released. După părerea mea, nu am dat nici un [listSigns release] suplimentar…. La fel se comportă daca incerc sa fac scroll în sus (când sunt la începutul listei): row devine 0 (corect, după mine) dar listSigns parcă este released, nu mai conține nimic. Bineînțeles, View-ul părinte este definit similar și merge foarte bine…când ajunge la capăt face bounce back, așa cum trebuie.
2. imaginile incărcate sunt prea mari, nu sunt scalate automat (toate au aceeasi mărime). bineînțeles, pot să umblu la mărimea iaginii, să a micșorez, dar oare nu se pot scala automat, în program, astfel încât sa încapă în rând?
@implementation CategoryRefListController
@synthesize listSigns;
@synthesize dataController;
@synthesize categ;
- (void)viewDidLoad {
DataController *controller=[[DataController alloc] init];
self.dataController=controller;
[controller release];
NSMutableArray *array=[[NSMutableArray alloc] init];
int count=[dataController countOfSigns];
NSLog(@“count este %d”, count);
for (int i=0; i<count; i++) {
TSign *tSign=[[TSign alloc] init];
tSign=[dataController objectInListAtIndex:i];
if (tSign.categorie==self.categ) {
[array addObject:tSign];
}
[tSign release];
}
self.listSigns=array;
[array release];
NSLog(@“count per categorie este %d”, [self.listSigns count]);
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
self.listSigns=nil;
self.dataController=nil;
[super viewDidUnload];
}
#pragma mark Table view methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [listSigns count];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Set up the cell…
NSUInteger row=[indexPath row];
NSLog(@“Categ este %d, row este %d”, self.categ, row);
TSign *tSign=[[TSign alloc] init];
tSign=[listSigns objectAtIndex:row];
cell.textLabel.text=tSign.title;
cell.imageView.image=tSign.poza;
[tSign release];
cell.textLabel.font=[UIFont systemFontOfSize:14];
return cell;
}
- (void)dealloc {
[listSigns release];
[dataController release];
[super dealloc];
}
@end