2010-09-30 16 views
0

J'ai un petit problème. J'ai sous-classé UIAlertView et je l'ai nommé UIDisclaimerAlertView.Problème lors du sous-classement de UIAlertView et utilisation de la sous-classe en tant que délégué

Jusqu'ici tout va bien, la sous-classe fonctionne bien. Mais maintenant je voulais utiliser cette classe comme son propre délégué. Donc, dans ma sous-classe, j'ai utilisé: self.delegate = self; Je l'ai fait parce que je voulais tout dans le même fichier de classe.

Maintenant, le problème auquel je fais face est que les méthodes de mes délégués sont appelées, mais les paramètres sont (null).

Par exemple:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    NSLog(@"Trying: %@", buttonIndex); 
} 

Returns (null) everytimes. Des idées pourquoi? J'ai aussi essayé [super setDelegate: self]; (pour dire directement la superclasse (UIAlertView)) et ça fait la même chose.

Voici le fichier de mise en œuvre complète:

#import "UIDisclaimerAlertView.h" 
#import "PremierSoinsAppDelegate.h" 
#import "BlocTexte.h" 

@implementation UIDisclaimerAlertView 

@synthesize dialogKey, plist, plistPath; 

- (id)initWithKeyAndBlocTexteId:(NSString *)key BlocTexteId:(NSString *)blocTexteId 
{ 
    if (self = [super init]) 
    {  
     // Fetching content 
     BlocTexte *blocTexte = [[BlocTexte alloc] init]; 
     NSString *messageString = [[blocTexte getBlocTextes:blocTexteId] objectAtIndex:1]; 

     // Setting superclass' properties 
     self.title = @"Disclaimer"; 
     self.message = messageString; 
     [super setDelegate: self]; 

     [self addButtonWithTitle: @"Ok"]; 
     [self addButtonWithTitle: @"Toujours"]; 

     // Setting plist key 
     self.dialogKey = key; 

     // Loading plist content 
     PremierSoinsAppDelegate *AppDelegate = (PremierSoinsAppDelegate *)[[UIApplication sharedApplication] delegate]; 
     self.plistPath = [AppDelegate saveFilePath:@"disclaimers.plist"]; 
     self.plist = [[NSMutableDictionary alloc] initWithContentsOfFile:self.plistPath]; 

     [blocTexte release]; 
    } 

    return self; 
} 

- (void)show { 

    [super show]; 
} 

- (void)toujours 
{ 
    [self.plist setValue:@"1" forKey:self.dialogKey]; 
    [self.plist writeToFile:self.plistPath atomically:YES]; 
} 

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    NSLog(@"Trying: %@", buttonIndex); 
} 

@end 

Répondre

2

buttonIndex est pas un pointeur, de sorte que la chose est formatter %@ pas le droit d'utiliser un: vous cherchez %d ou %i. Vous pouvez confondre NSInteger -un type primitif, qui est typedef'd comme int sur les systèmes 32 bits comme l'iPhone avec NSNumber, un type d'objet qui agit comme un porte-nombre générique.

+0

Oh merde, je suis tellement bête. Je fais toujours la même erreur! Merci pour cela, ça marche maintenant ... – TomShreds