“Impossible de trouver le protocole de déclaration de ...” dans l'adoption de classe objective-c
Je suis un peu frustré en ce moment avec le délégué personnalisé processus en objective-c. J'ai utilisé le modèle de conception à quelques reprises déjà et ont une assez bonne compréhension de la façon dont il fonctionne. J'ai cherché sur internet pendant 2 heures à essayer de trouver ce que je fais mal, dans ce cas, et pas de l'emporter. J'ai aussi par rapport à ma dernière utilisation de la coutume des délégués qui sont en état de fonctionnement contre cette instance, et ne vois aucune différence conceptuelle. donc, ici, nous allons:
Je suis en train de faire un custom dual vue de la table (une table pour la liste, et l'autre pour tenir les sélections effectuées à partir de cette liste.) de sorte que l'utilisateur peut effectuer des sélections de base. voici le fichier d'en-tête:
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@protocol ListSelectorViewDelegate
-(void) listTableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
-(void) selectTableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
-(void) listTableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;
-(void) selectTableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;
- (void)listTableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)selectTableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
@end
@protocol ListSelectorDataSource
-(UITableViewCell *)listTableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
-(UITableViewCell *)selectTableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
-(NSArray *)sectionIndexTitlesForListTableView:(UITableView *)tableView editStatus:(BOOL) status;
-(NSArray *)sectionIndexTitlesForSelectTableView:(UITableView *)tableView editStatus:(BOOL) status;
-(NSInteger)listTableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index;
-(NSInteger)selectTableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index;
@end
@interface ListSelectorViewController : UIViewController {
//Delegate
id <ListSelectorViewDelegate> listsDelegate;
id <ListSelectorDataSource> listsDataSource;
//Titles
IBOutlet UINavigationBar *pageNavBar;
IBOutlet UINavigationBar *selectNavBar;
IBOutlet UINavigationBar *listNavBar;
//Tables
IBOutlet UITableView *selectTable;
IBOutlet UITableView *listTable;
//Table Data
NSMutableArray *listItems;
NSMutableArray *selectItems;
//Search Bars
IBOutlet UISearchBar *selectedSearch;
IBOutlet UISearchBar *listSearch;
BOOL listTableIsSearching;
BOOL selectTableIsSearching;
}
@property(nonatomic,assign) id <ListSelectorViewDelegate> listsDelegate;
@property(nonatomic,assign) id <ListSelectorDataSource> listsDataSource;
-(IBAction) newItem:(id)sender;
-(IBAction) selectAll:(id)sender;
-(IBAction) clearSelections:(id)sender;
@end
Avis le protocole officiel des déclarations. Notez également que cette, le long de avec le .m fichier compiler amende. Quand j'essaye d'écrire une classe à adopter le protocole, je reçois l'erreur "Impossible de trouver le protocole de déclaration pour "ListSelectorDataSoure" ". Je reçois le même message pour la "ListSelectorViewDelegate". Ici est la .h fichier pour le délégué de classe:
#import <Foundation/Foundation.h>
#import"ListSelectorViewController.h"
@interface ListSelectorDelegateTemplate : NSObject
<ListSelectorDataSource,ListSelectorViewDelegate>{
}
@end
Remarque que je suis de l'importation de la ListSelectorViewController.h où le protocole déclarations sont trouvés. Notez également que lorsque vous tapez "" il ne auto complet ce qui signifie qu'il ne veut le voir. Comme je l'ai dit, je l'ai fait de cette façon exacte pour d'autres objets sans problèmes et ne peut pas envelopper la tête autour de celui-ci ... un peu d'Aide serait grandement appréciée
ListSelectorDataSoure
. Ce n'est pas seulement ce que c'est?Merci pour remarquer mais non c'était juste de me taper l'erreur dans ma question au lieu de copier/coller... je n'ai pas encore de comprendre pourquoi il ne construiront pas de
OriginalL'auteur RBI | 2010-12-18
Vous devez vous connecter pour publier un commentaire.
Ok compris.... extrêmement stupide réponse ici...
J'ai d'abord créé le ListSelectorViewController dans un projet distinct et de l'ajouter au projet en cours, je suis en train de travailler pour une raison quelconque, le .h et .m ne sont pas visibles pour le reste du projet et a été la raison de l'erreur. simplement ajouté un nouveau fichier au projet et copié sur le contenu de la classe d'origine.
OriginalL'auteur RBI
Eu ce problème aujourd'hui. C'est un xcode bug en effet.
mon délégué fichier de protocole a été modifié par git merge conflagration, j'ai résolu le conflit, mais tous mes fichiers à l'aide de ce délégué ne peut toujours pas trouver ce délégué fichier de protocole.
j'ai donc supprimer ces deux fichiers par référence ,et de les ajouter au projet de nouveau. il a travaillé!
OriginalL'auteur phenmod
Si ListSelectorViewController.h importe également ListSelectorDelegateTemplate.h, vous obtiendrez des erreurs comme ça. Vous devrez déplacer les importations que vous pouvez dans le ".m" de fichiers, et de les remplacer par
@class
déclarations si nécessaire.OriginalL'auteur Chuck
Eu le même problème aujourd'hui. Cela semble être une xcode bug.
De toute façon ma solution a été de créer un vide de h. fichier, déclarer mon protocole, puis #importer ce nouveau h. fichier de n'importe où où je l'utilise.
OriginalL'auteur animal_chin
Vous avez mis mon protocole de déclaration sur fichier séparé et de l'importer ensuite
OriginalL'auteur Saad Ur Rehman
ce qui a fonctionné pour moi a été le nettoyage du projet (maj+commande+K) simple.
OriginalL'auteur Conflagrationator
Dans mon cas, l'erreur a été causée par une cyclique #import. Le délégué du protocole de déclaration de fichiers inclus le réalisateur du délégué . Le réalisateur inclus le délégué du protocole de dossier de déclaration.
OriginalL'auteur Stefan van der Horst