2011-06-16 3 views
0

J'ai une application iPad en cours, mais j'ai du mal à saisir la sélection d'une ligne dans ma vue de table. Je sais que c'est parce que je n'ai pas encore défini mon délégué correctement, mais après 2 heures sur le net, ça n'a toujours pas beaucoup de sens. Ce que j'essaye de faire est de passer l'élément de rangée de table sélectionné à une nouvelle vue qui affiche des informations basées sur la sélection - assez standard. J'ai mis en place la sous-classe tableViewController en utilisant l'option pour la créer en tant que sous-classe UITableViewController qui incorpore automatiquement les délégués (UITableViewDelegate et UITableViewDataSource), sauf erreur.UITableView et les délégués

Dans la méthode didSelectRowsAtIndex, j'essaie de créer un DetailViewController. J'ai essayé avec un fichier nib et en créer un purement dans le code mais la classe n'est jamais créée. Il me manque un pas dont je suis sûr mais je ne trouve pas ce que c'est. À un moment donné ne devrais-je pas définir quelle fonction je veux accéder à la ligne sélectionnée? Mais où? Comment?

Dans ce que je considérais comme ma meilleure tentative, j'ai créé DetailViewController, défini une variable chaîne dans detailViewController sur la ligne sélectionnée, puis essayé d'ajouter la vue detailViewController à afficher. J'ai pensé que je pourrais alors utiliser viewDidload pour appeler la fonction suivante mais la vue n'a jamais été affichée à l'écran.

Quelques conseils de base seraient agréables. Ou un tutoriel décent serait bien. Pas d'appels pour lire les documents pertinents s'il vous plaît, j'ai été dessus et maintenant j'ai besoin d'un exemple pour rassembler les choses. Merci, Steve

+0

votre question est recommandé de modifier le code et l'affichage de ce que vous avez essayé jusqu'à présent. –

+0

Je ne sais pas ce que j'ai fait pour résoudre ce problème, mais j'ai supprimé ce que j'avais fait et essayé à nouveau. Assez sûr que je n'ai rien changé de majeur mais le délégué appelle maintenant viewDidLoad de la classe. Frustrant... – Steve

Répondre

0

Oui, peut-être coller l'extrait de code sera plus facile de comprendre ce qui se passe ici. Et ces méthodes de délégué (didSelectRowAtIndexPath :) sont-elles appelées correctement?

0

Je pense que vous manquez cette ligne dans votre méthode didSelectRowAtIndexPath:

[self presentModalViewController:controller animated:YES]; 

où le contrôleur est un objet de classe DetailViewController

0

Essayez ce,

cela va dans didSelectRowAtIndexPath

MoreInfoTable *moreInfoView = [[MoreInfoTable alloc] initWithStyle:UITableViewStyleGrouped]; 
//in the MoreInfoTable, make properties like titles etc. 
[self.navigationController pushViewController:moreInfoView animated:YES]; 
[moreInfoView release]; 
} 

Voici un exemple de MoreI nfoTable.h

@interface MoreInfoTable : UITableViewController { 
NSMutableArray *moreInfo; 
NSURL *getDirections; 
NSURL *getWebsite; 
NSMutableString *getPhoneNumber; 
NSString *address; 
NSString *footer; 
float lat, lon; 


} 
-(void)goToWebsite; 
-(void)goToMaps; 
-(IBAction)addToFavorites:(id)sender; 
-(void) callNumber; 
@property (nonatomic,retain) NSURL *getDirections; 
@property (nonatomic,retain) NSURL *getWebsite; 
@property (nonatomic,retain) NSMutableString *getPhoneNumber; 
@property (nonatomic,retain) NSString *footer; 
@property (nonatomic,retain) NSString *address; 
@property (readwrite) float lat; 
@property (readwrite) float lon; 
@end 

retour maintenant dans l'autre fichier dans lequel vous déclarez la table, vous pouvez dire

MoreInfoTable *moreInfoView = [[MoreInfoTable alloc] initWithStyle:UITableViewStyleGrouped]; 
//in the MoreInfoTable, make properties like titles etc. 
moreInfoView.title = @"TITLE!"; 
//etc. 
[self.navigationController pushViewController:moreInfoView animated:YES]; 
[moreInfoView release]; //