Я никогда не делал это программно.
Не могли бы вы опубликовать свой changeType?
Он может выглядеть как
-(void)changeType:(id)sender {
// doing something here
}
и должен быть объявлен в разделе интерфейса;
Также вы можете поставить точку останова, чтобы посмотреть, вызывается ли она вообще.И посмотрите значение переменных.Пожалуйста, проверьте, звонил ли он.
РЕДАКТИРОВАТЬ:
Ниже моего кода, который вы можете вставить в созданное по умолчанию приложение для навигации:
на RootViewController.m:
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *tmpInfoButton = [[UIBarButtonItem alloc] initWithCustomView:infoButton];
self.navigationItem.rightBarButtonItem = tmpInfoButton;
[tmpInfoButton release];
}
-(void)buttonPressed:(id)sender {
NSLog(@"Button pressed...");
}
в RootViewController.h:
-(void)buttonPressed:(id)sender;