ios - cellForRowAtIndexPath doesn't work -
on xcode project have view tableview. have "special" string contains objects populate array populates tableview. example:
nsstring *myvalues=[[nsstring alloc]init]; myvalues = @"aaa$bbb$ccc?111$222$333?"; as can see characters $ , ? separate objects. when call view populate array string tableview doesn't work. here code:
file.h:
#import <uikit/uikit.h> @interface equipaggiovc : uiviewcontroller <uitableviewdelegate, uitableviewdatasource>{ uitableview *tableviewequipaggio; uitableviewcell *nibloadedcell; nsmutablearray *arrayequipaggio; nsstring *stringadati; } @property (nonatomic, retain) iboutlet uitableview *tableviewequipaggio; @property (nonatomic, retain) iboutlet uitableviewcell *nibloadedcell; @property (nonatomic, retain) nsmutablearray *arrayequipaggio; @property (nonatomic, retain) nsstring *stringadati; @end file.m:
#import "equipaggiovc.h" #import "appdelegate.h" #import "classequipaggio.h" @interface equipaggiovc () @end @implementation equipaggiovc @synthesize tableviewequipaggio; @synthesize nibloadedcell; @synthesize arrayequipaggio; @synthesize stringadati; - (id)initwithnibname:(nsstring *)nibnameornil bundle:(nsbundle *)nibbundleornil { self = [super initwithnibname:nibnameornil bundle:nibbundleornil]; if (self) { // custom initialization } return self; } -(nsstring *)uuid { //to create id cfuuidref uuidref = cfuuidcreate(null); cfstringref uuidstringref = cfuuidcreatestring(null, uuidref); cfrelease(uuidref); return [(nsstring *)uuidstringref autorelease]; } -(void)loadtestdata:(nsstring*)stringadatiarray{ //populate array string. if(stringadatiarray!=nil){ nsarray *elenco=[stringadatiarray componentsseparatedbystring:@"?"]; (int i=0; i<([elenco count]-1) ; i++) { nsstring *dettagliequipaggio=[[nsstring alloc]init]; dettagliequipaggio=[elenco objectatindex:i]; nsarray *dettagli=[dettagliequipaggio componentsseparatedbystring:@"$"]; classequipaggio *aequipaggio=[[classequipaggio alloc]init]; aequipaggio.idmembro=[dettagli objectatindex:0]; aequipaggio.sessomembro=[dettagli objectatindex:1]; aequipaggio.datanascitamembro=[dettagli objectatindex:2]; [arrayequipaggio addobject:aequipaggio]; [aequipaggio release]; } } } - (uitableviewcell *)tableview:(uitableview *)tableequipaggioview cellforrowatindexpath:(nsindexpath *)indexpath { static nsstring *cellidentifier = @"cell"; static nsstring *sloadnibnamed; uitableviewcell *cell; classequipaggio *aequipaggio=[arrayequipaggio objectatindex:indexpath.row]; cell = [tableequipaggioview dequeuereusablecellwithidentifier:cellidentifier]; sloadnibnamed=@"equipaggiocell"; if (cell == nil) { [[nsbundle mainbundle] loadnibnamed:sloadnibnamed owner:self options:null]; cell = [self typenibloadcell:aequipaggio.idmembro]; } // configure cell uilabel *tiposessolabel = (uilabel*) [cell viewwithtag:1]; tiposessolabel.text = aequipaggio.sessomembro; uilabel *datanascitalabel=(uilabel*)[cell viewwithtag:2]; datanascitalabel.text=aequipaggio.datanascitamembro; return cell; } -(nsinteger)tableview:(uitableview*)tableview numberofrowsinsection:(nsinteger)section{ return [arrayequipaggio count]; } -(uitableviewcell *)typenibloadcell:(nsstring *)named{ return nibloadedcell; } - (bool)tableview:(uitableview *)tableview caneditrowatindexpath:(nsindexpath *)indexpath { // return no if not want specified item editable. return no; } - (nsinteger)numberofsectionsintableview:(uitableview *)tableview { return 1; } - (void)viewdidload { [super viewdidload]; arrayequipaggio=[[nsmutablearray alloc]init]; stringadati=[[nsstring alloc]init]; tableviewequipaggio=[[uitableview alloc]init]; } -(void)viewdidappear:(bool)animated{ appdelegate *appdelegate=(appdelegate*)[[uiapplication sharedapplication]delegate]; uibarbuttonitem * btnindietroa = [[[uibarbuttonitem alloc] initwithtitle:@"indietro" style:uibarbuttonitemstylebordered target:self action:@selector(editnavbuttonpressed)]autorelease]; [self.navigationitem setleftbarbuttonitem:btnindietroa]; stringadati = [[nsuserdefaults standarduserdefaults] objectforkey:@"stringadati"]; if(stringadati!=nil){ [arrayequipaggio removeallobjects]; [self loadtestdata:stringadati]; } } - (void)didreceivememorywarning { [super didreceivememorywarning]; // dispose of resources can recreated. } -(void)dealloc{ [super dealloc]; } @end on nib file tableview has connection delegate , datasource, iboutlet connected it.
thanks support.
edit: [arrayequipaggio count] return 0.
by looks of question problem method cellforrowatindexpath not being called , said [arrayequipaggio count] return 0.
since using array @ method numberofrowsinsection return value of 0 normal table not calling method cellforrowatindexpath. since telling table there no rows.
if want table populated check array return value greater 0.
in nutshell has no data populate table, why doesnt work.
check in viewdidappear:(bool)animated pulling stringadati.
nslog(@"info: %@",stringadati);
Comments
Post a Comment