L'échec dans l'attribution de l'auto.délégué à produire non reconnu sélecteur envoyé
Je suis un nouveau dans iOS, et j'ai des difficultés dans la mise en œuvre @protocole donc désolé si vous pensez que c'est une chose facile..
j'ai été la recherche autour stackoverflow.com, les sites web, et aussi essayer oncle Google pour un certain temps et j'ai décidé de demander ici...
L'idée principale est d'appeler un MyViewController de TopViewController et ne flip animation
Je commence avec la création de protocoles..
//This is my Delegate header
//MyViewController.h
@protocol MyViewControllerlDelegate
- (void) myViewControllerDidFinish;
@end
@interface MyViewController : UIViewController
{
id <MyViewControllerlDelegate> delegate;
}
@property (nonatomic, assign) id <MyViewControllerlDelegate> delegate;
- (IBAction) done;
@end
et ci-dessous sur la mise en œuvre :
//MyViewController.m
#import "MyViewController.h"
@implementation MyViewController
@synthesize delegate;
//Another Code above
- (IBAction)done
{
[self.delegate myViewControllerDidFinish];
}
//Another Code Below
@end
J'utilise au-dessus de l'objet à être appelé à partir d'un autre point de vue ci-dessous et ajouter flip transition :
//TopViewController.h
#import "MyViewController.h"
@class MapScrollView;
@interface TopViewController : UIViewController <UIScrollViewDelegate,MyViewControllerlDelegate>
{
UIScrollView *topScrollView;
UIButton *infoButton;
}
@end
TopViewController.h la mise en Œuvre
//TopViewController.m
#import "TopViewController.h"
#import "CustomScrollView.h"
#import <QuartzCore/QuartzCore.h>
- (void)loadView
{
//Step 1: make the outer paging scroll view
CGRect topScrollViewRect = [[UIScreen mainScreen] bounds];
topScrollView = [[UIScrollView alloc] initWithFrame:topScrollViewRect];
topScrollView.pagingEnabled = YES;
topScrollView.backgroundColor = [UIColor blackColor];
topScrollView.showsVerticalScrollIndicator = NO;
topScrollView.showsHorizontalScrollIndicator = NO;
topScrollView.contentSize = CGSizeMake(topScrollViewRecte.size.width,
topScrollViewRecte.size.height);
topScrollView.delegate = self;
self.view = pagingScrollView;
CustomScrollView *sView = [[[MapScrollView alloc] init] autorelease];
sView.frame = [[UIScreen mainScreen] bounds];
[sView displayTiledMap];
[pagingScrollView addSubview:sView];
//add Info Button
UIButton *button = [UIButton buttonWithType:UIButtonTypeInfoDark];
[button addTarget:self action:@selector(infoIsTouch:) forControlEvents:UIControlEventTouchDown];
button.frame = CGRectMake(282.0, 440.0, 18.0, 19.0);
[self.view addSubview:button];
}
-(void)infoIsTouch:(id)sender
{
MyViewController *myView =
[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
myView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
//
//Here where the code is crash
//
[myView setDelegate:self];
//
//Code from here to below is not run...
//
[self presentModalViewController:myView animated:YES];
[myView release];
}
- (void) myViewControllerDidFinish
{
[self dismissModalViewControllerAnimated:YES];
}
etc...
@end
Ci-dessous le code de produire de l'erreur de compilation suivant..
2010-12-06 01:09:07.946 MyViewDelegatePractice[9473:207] -[TopViewController setDelegate:]: unrecognized selector sent to instance 0x5f30fb0
2010-12-06 01:09:07.949 MyViewDelegatePractice[9473:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TopViewController setDelegate:]: unrecognized selector sent to instance 0x5f30fb0'
*** Call stack at first throw:
(
//Cuts...
)
terminate called after throwing an instance of 'NSException'
Celles erreur est générée lorsque j'appuie sur infoButton qui appelez -(void)infoIsTouch:(id)sender méthode, puis s'arrêter à [mavue setDelegate:auto] ligne.. quelqu'un pourrait-il me donner un indice où sont mes erreurs ?
REMARQUE : Si vous dégoût avec mon anglais.. n'hésitez pas à commenter buter aussi.. mais avant que ... je suis désolé j'ai essayer de mon mieux..
MyViewControllerlDelegate
et FanglesMapSettingViewControllerDelegate
, dont l'un est-il censé mettre en œuvre? Je suis confus.merci sam, c'est ma faute de frappe.. j'ai oublié de changer les variables.. désolé combat..
j'ai changer FanglesMapSettingViewControllerDelegate à MyViewControllerlDelegate mais encore produire même erreur..
OriginalL'auteur FerryHtw | 2010-12-05
Vous devez vous connecter pour publier un commentaire.
Ma conjecture est que vous avez une autre variable nommée
myView
ici, c'est l'interception de votre appel à laMyViewController
exemple que vous venez de créer. Essayez de changer le nom de cette instance, et de voir ce qui se passe.D'autres choses: ooks que vous ayez une faute de frappe dans votre mise en œuvre de
MyViewController
. Modifier cette ligne::
Et vous devriez être bon d'aller. (Vous obtenez cette erreur car le fichier d'en-tête ne correspond pas à toute mise en œuvre, en raison de la typo, de sorte que vous ne jamais obtenir le bénéfice de votre
@synthesize delegate;
appel.Aussi, assurez-vous de déclarer le protocole approprié dans
TopViewController
:Et de changer votre protocole de déclaration:
Autre que cela, les choses sont à la recherche de bonnes.
encore une erreur, j'ai effectivement modifié les codes avant que je remplis.. et encore produire une erreur..
Ferry, vous êtes exactement la même erreur?
oui, exactement les mêmes..
Cette réponse n'a aucun sens;
@implementation SomeClass<NSObject>
est à peu près jamais jamais la bonne réponse lors de l'implémentation d'une classe. Si vous avez besoin d'NSObject
comme le comportement, la sous-classe NSObject!OriginalL'auteur Sam Ritchie
Vieux post, mais pour quelqu'un d'autre avec le même problème assurez-vous de définir la Classe de l'identité de l'inspecteur de la Classe correcte. C'était mon problème. Probablement le plus oublié chose à faire dans Xcode.
Dans mon cas, j'ai malencontreusement fait la classe que la séquence a été en provenance de la même classe que la destination
OriginalL'auteur jdog
Ne vous
@synthesize delegate;
quelque part? Oh, ça y est. Derp.OK -- donc -- c'est une erreur d'exécution. Les avertissements du compilateur, etc, être maudit (je veux dire -- fix 'em, certainement, mais le compilateur génère du code qui est en cours d'exécution et de s'écraser).
Non reconnu sélecteur signifie qu'une tentative a été faite pour invoquer une méthode sur un objet où l'objet ne répond pas à la dite méthode. Dans ce cas, la trace n'est pas susceptible d'être terriblement utile; vous déjà identifié le lieu de l'écrasement et pourquoi il s'écroule.
Essayez de définir un point d'arrêt sur la ligne qui est en échec et ensuite utiliser le débogueur pour interroger l'objet;
... etc ...
Il y a quelque chose de probablement terriblement évident, mais je ne le vois pas désinvolte.
Je pense qu'il doit avoir une autre variable nommée mavue. Le code semble correct, certainement pas les pauvres d'une manière qui permettrait de produire cette erreur...
OriginalL'auteur bbum