2012-10-19 4 views
1

J'ai UITableView dans UIViewController et j'ai connecté par le biais de sortie et delegete et source de données sont affectés à soi-même. numberOfSectionsInTableView et numberOfRowsInSection OBTIENNENT appelé j'ai essayé en utilisant NSLog mais cellForRowAtIndexPath ne reçoit pas appeler mon code ressemble-tableView: cellForRowAtIndexPath: ne se fait pas appeler

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSLog(@" cellForRowAtIndexPath "); 

    static NSString *CellIdentifier = @"CurrencyCell"; 

    CurrencyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[CurrencyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] ; 
    } 
    new *Obj = [appdelegate.array objectAtIndex:indexPath.row]; 


    cell.CurNameLabel.text = Obj.C_Name; 
    cell.textLabel.text = @"sdfnhsdfndsio;"; 
    NSLog(@"C_Name %@", Obj.C_Name); 

    return cell; 
} 

quelqu'un peut-il tel wer que je fais Merci d'erreur à l'avance

+1

avez-vous connecté les délégués et la source de données aussi dans IB –

+0

y ai-je connecté –

+0

Quelles sont les valeurs que vous renvoyez dans 'numberOfSectionsInTableView' et' numberOfRowsInSection'? – mttrb

Répondre

6

Il semble que le numberOfSectionsInTableView et numberOfRowsInSection retour sont 0.If c'est le cas, alors cellForRowAtIndexPath ne sera pas appelé ..

Depuis le commentaire above..it semble que variable « YourAppDelegate » est null ou yourArray est null .Essayez gardant le point de rupture de ces délégués, pour vérifier les valeurs renvoyées par les

+0

ya-tu ware juste mon tableau était nul merci une tonne :) –

4

essayer ce délégué add et dans le fichier source de données .h comme ci-dessous ..

@interface AddProjectViewController : UIViewController< 
UITableViewDataSource,UITableViewDelegate> 
..... 
@end 

après dans viewDidLoad: mettre ce code ..

- (void)viewDidLoad 
    { 
     yourTableView.delegate= self; 
     yourTableView.dataSource=self; 
    } 

et enfin essayer cela dans numberOfRowsInSection méthode pour retourner une valeur int plus de 0

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [yourArray count];//or any int value 
} 
+0

Je l'ai fait as - (NSInteger) tableView: (UITableView *) tableView numéroOfRowsInSection: section (NSInteger) { return [appdelegate.array count]; } –

+0

vous vérifiez que votre tableau n'est pas nul? –

+0

ya vous ware juste mon tableau était nul merci une tonne :) –

0

Vérifiez les valeurs numériques dans votre tableau dans la méthode "numberOfRowsInSection". imprimez votre tableau avant de renvoyer la valeur.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    NSLog(@"%@",returnedArray); 
    return [returnedArray count];// 
} 

Vous pouvez également essayer d'envoyer un certain nombre de lignes statiques dans votre méthode pour vérifier.

Il semble que votre tableau obtienne la valeur null dans cette méthode.

Espérons que cela résout le problème.

2

Il semble que le numberOfSectionsInTableView et numberOfRowsInSection retourné 0 ou peut-être une autre raison pour cette

Vérifiez soigneusement points ci-dessous

si vous créez TableView de XIB au catalogue devrait mettre la source de données et déléguer à le propriétaire des fichiers dans.

si vous créez il programatically alors vous devez définir le délégué et dataSource comme ci-dessous et ne pas oublier d'adopter le dataSourec et delegate pour UItableView dans .h

YourViewController : UIViewController<UITableViewdelegate, UITableViewDatasource> 

mettre la ligne ci-dessous du code juste après la ligne où vous créez le UITableView

 tableViewObj.delegate= self; 
     tableViewObj.dataSource=self 

vérifiez soigneusement que votre datasource (quel que soit le nom du tableau) ont des données, car chaque fois que vous créez le nombre de lignes que vous passez le tableau `compter comme indiqué ci-dessous

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    { 
     int numberOfRows= [datasource count]; 
     return numberOfRows; 
     // here check does the `numberOfRows` have nonzero value or just 0 
     if it retunes 0 then cellForAtIndexPath would not call . 
    } 

J'espère que ce sera utile pour vous

+0

ya vous ware juste mon tableau était nul merci une tonne :) –

1

Si vous avez activé multithreading concept dans votre application, même si vous appelez reloadData méthode sur tableviewcellForRowAtIndexPath ne sera pas appelé parfois. Donc, appelez méthode realod comme ceci:

[self performSelectorOnMainThread:@selector(reloadTable) withObject:self waitUntilDone:NO]; 

Cela peut fonctionner.

- (void)reloadTable 
{ 
    [self.tableView reloadData]; 
} 

Si vous n'êtes pas dans un environnement multithreading, alors vous devez vous assurer tableviewsdelegate et datasource ne sont pas nulles.

+0

cela a bien fonctionné pour moi .. merci Dee – Hari1251

Questions connexes