je dois présenter un contrôleur de vue modal et être informé lorsqu'il est rejeté ou avisé que je dois rejeter, en regardant ici, je suis encore confus:délégué ModalViewController confusion
J'ai mon mainViewController et contrôleur de myModalView et j'ai le code suivant qui doit être mis en œuvre, mais ne savez pas où - première place délégué protocal:
@protocol DataSyncDelegate <NSObject>
-(void) doneWithSync;
@end
qui Controller.h ce que cela va dans? Je suppose mon modalViewController.h
Deuxièmement, ma mise en œuvre:
-(void) doneWithSync {
[self dismissModalViewControllerAnimated:YES];
}
qui Controller.m ce que cela va dans? Je suppose mon mainViewController.m
J'ai également les propriétés des délégués qui doit être Aded:
id delegate;
@property (nonatomic, retain) id delegate;
qui Controller.m ne ce besoin d'aller? Je suppose mon modalViewController.h
et voici comment je présente le modalViewController de mon MainViewController:
DataSyncViewController *dataSyncViewController = [[DataSyncViewController alloc] initWithOptions:FALSE];
dataSyncViewController.delegate = self;
[self presentModalViewController:dataSyncViewController animated:NO];
[dataSyncViewController release];
En ce moment cela me donne l'erreur suivante:
-[DataSyncViewController setDelegate:]: unrecognized selector sent to instance 0x5952e20
Qu'est-ce que suis-je manquant ici?
EDIT - VOICI MON MODAL VOIR CONTRÔLEUR .H
#import <UIKit/UIKit.h>
@protocol DataSyncDelegate
-(void) doneWithSync;
@end
@interface DataSyncViewController : UIViewController {
id <DataSyncDelegate> delegate;
}
@property (nonatomic, retain) id <DataSyncDelegate> delegate;
@end
EDIT - MAIN VIEW CONTROLLER .H ET .M
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "DataSyncViewController.h"
@interface LoginViewController : UIViewController <DataSyncDelegate>{
}
@end
VOICI LA CREATION DE LA MODAL:
DataSyncViewController *dataSyncViewController = [[DataSyncViewController alloc] initWithOptions:FALSE];
dataSyncViewController.delegate = self;
[self presentModalViewController:dataSyncViewController animated:NO];
[dataSyncViewController release];
VOICI MA MISE EN ŒUVRE DU DÉLÉGUÉ:
-(void) doneWithSync {
[self dismissModalViewControllerAnimated:YES];
}
Et maintenant tout semble câbler correctement dans le compilateur mais je reçois l'erreur suivante:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[DataSyncViewController setDelegate:]: unrecognized selector sent to instance 0x59e4b40'
de poster aussi votre contrôleur mainView :) – willcodejavaforfood
Ne devrait-il pas être @interface LoginViewController: UIViewController au lieu de DataSyncComplete? –
willcodejavaforfood
désolé, je passais les noms autour d'essayer différentes choses - ils correspondent correctement – Slee