2010-07-24 2 views
3

J'ai créé une coutume UITableViewCellUIButton créé dans des accidents de la cellule UITableView quand on tape

a ajouté un bouton dans sa zone initWithStyle:

favoriteButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 
     favoriteButton.backgroundColor = [UIColor clearColor]; 
     [favoriteButton setTitle:@"Play" forState:UIControlStateNormal]; 
     [favoriteButton addTarget:self action:@selector(favoriteClick:) forControlEvents:UIControlEventTouchUpInside]; 
     favoriteButton.center = self.center; 

définir son cadre et mise en page:

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    CGRect contentRect = self.contentView.bounds; 
    CGFloat boundsX = contentRect.origin.x; 
    CGRect frame; 

    frame = CGRectMake(boundsX+200, 44, 40, 40); 
    favoriteButton.frame = frame; 

} 

et puis dans mon fichier tableviewcontroller.m j'utilise cette tableviewcell et l'utilisateur clique sur pour aller à l'action dans ce tableviewcontroller.m code

-(void)favoriteClick:(id)sender// forEvent:(UIEvent*)event 
{ 
    NSLog(@"click"); 

} 

mais quand je tape sur le bouton que je reçois une exception non gérée:

2010-07-24 16:06:02.197 Film Fest[10342:40b] -[ProgramGuideCell favoriteClick:]: unrecognized selector sent to instance 0x6e63ff0 
2010-07-24 16:06:02.200 Film Fest[10342:40b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ProgramGuideCell favoriteClick:]: unrecognized selector sent to instance 0x6e63ff0' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x02a56919 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x02ba45de objc_exception_throw + 47 
    2 CoreFoundation      0x02a5842b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
    3 CoreFoundation      0x029c8116 ___forwarding___ + 966 
    4 CoreFoundation      0x029c7cd2 _CF_forwarding_prep_0 + 50 
    5 UIKit        0x00301e14 -[UIApplication sendAction:to:from:forEvent:] + 119 
    6 UIKit        0x0038b6c8 -[UIControl sendAction:to:forEvent:] + 67 
    7 UIKit        0x0038db4a -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527 
    8 UIKit        0x0038c6f7 -[UIControl touchesEnded:withEvent:] + 458 
    9 UIKit        0x00579070 _UIGestureRecognizerUpdateObserver + 3687 
    10 CoreFoundation      0x02a37d1b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27 
    11 CoreFoundation      0x029cc987 __CFRunLoopDoObservers + 295 
    12 CoreFoundation      0x02995c17 __CFRunLoopRun + 1575 
    13 CoreFoundation      0x02995280 CFRunLoopRunSpecific + 208 
    14 CoreFoundation      0x029951a1 CFRunLoopRunInMode + 97 
    15 GraphicsServices     0x030b42c8 GSEventRunModal + 217 
    16 GraphicsServices     0x030b438d GSEventRun + 115 
    17 UIKit        0x0030fb58 UIApplicationMain + 1160 
    18 Film Fest       0x00002170 main + 102 
    19 Film Fest       0x00002101 start + 53 
) 
terminate called after throwing an instance of 'NSException' 

Je ne vois pas ce que Im faire mal ici ...

Répondre

1

essayer de retourner IBAction au lieu de void sur votre sélecteur, et placez le sélecteur dans ProgramGuideCell au lieu de tableviewcontroller.

-(IBAction)favoriteClick:(id)sender// forEvent:(UIEvent*)event 
{ 
    NSLog(@"click"); 

} 
+0

pas de chance ici. toujours des accidents. Je me suis assuré de modifier le fichier h et le fichier m, aussi la cellule est programmée donc ce n'est pas vraiment un contexte IBAction ... – theprojectabot

+0

J'ai mis à jour ma réponse. Vous devriez mettre le sélecteur dans la bonne classe. Sinon, vous devez spécifier l'instance dans le sélecteur. –

Questions connexes