J'ai essayé d'inclure un bouton personnalisé par programme dans un UIView qui est une sous-vue de UITabBarController. Le bouton s'affiche correctement mais lorsque je clique dessus, il se bloque sans message d'erreur. Son étrange que parfois il ne incohérente:UIButton dans un UITabBarController plantant lorsqu'on clique dessus!
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString playButton]: unrecognized selector sent to instance 0x632cd10'
J'ai même essayé de supprimer le code dans ma méthode de bouton de lecture, j'ai essayé de changer le nom playButton à PlayAction, j'ai essayé aussi ajouter le bouton directement à « soi » de ne pas aboutView mais le résultat est toujours le même. Je suppose que cela a quelque chose à voir avec le tabBar ayant un UIView comme sous-vue avec un bouton dessus. Je ne sais pas.
Voici un extrait de code de la façon dont j'ai construit la tabBar dans ma méthode de appDelegate
// About Tab
aboutViewC = [[[AboutViewController alloc] init] autorelease];
aboutNavC = [[[UIViewController alloc] init] autorelease];
aboutNavC.title = @"About";
aboutNavC.view = aboutViewC.view;
// Lessons Tab
lessonsViewC = [[[LevelViewController alloc] init] autorelease];
lessonsViewC.title = @"Levels";
lessonsNavC = [[[UINavigationController alloc] initWithRootViewController:lessonsViewC] autorelease];
lessonsNavC.title = @"Lessons";
lessonsNavC.viewControllers = [NSArray arrayWithObjects:lessonsViewC, nil];
tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects:aboutNavC, lessonsNavC, nil];
et Heres le code pour la mise en œuvre de la classe AboutViewController
AboutViewController.h
#import
@interface AboutViewController : UIViewController {
UIButton *playSoundButton;
UIView *aboutView;
}
- (void)playButton;
@end
AboutViewController. m
#import "AboutViewController.h"
@implementation AboutViewController
- (void)dealloc {
[playSoundButton release];
[aboutView release];
[super dealloc];
}
- (void)viewDidLoad {
aboutView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[playSoundButton = [UIButton buttonWithType:UIButtonTypeCustom] retain];
image = [UIImage imageNamed:@"bt_play.png"];
[playSoundButton setImage:image forState:UIControlStateNormal];
[playSoundButton addTarget:self action:@selector(playButton) forControlEvents:UIControlEventTouchUpInside];
playSoundButton.frame = CGRectMake(0, 350, 40, 40);
[aboutView addSubview:playSoundButton];
stopSoundButton.hidden = YES;
playSoundButton.hidden = NO;
[self.view addSubview:aboutView];
[super viewDidLoad];
}
- (void)playButton
{
NSLog(@"playAction method");
}
@end
Merci d'avance!