Я попытался программно включить пользовательскую кнопку в UIView, который является подпредставлением UITabBarController.
Кнопка отображается нормально, но когда я нажимаю на нее, она вылетает без сообщения об ошибке. Странно, что иногда это противоречиво:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString playButton]: unrecognized selector sent to instance 0x632cd10'
Я даже пытался удалить любой код в моем методе кнопки воспроизведения, я попытался изменить имя playButton на playAction, я также попытался добавить кнопку непосредственно в «self», а не в aboutView, но результат все тот же.
Полагаю, это как-то связано с TabBar с UIView в качестве подпредставления с кнопкой на нем. Я не знаю.
Вот фрагмент кода того, как я построил tabBar в моем методе 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];
и вот код для реализации класса 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
Заранее спасибо!