2012-07-07 111 views
0

我的代碼:的NavBar按鈕的操作不工作

-(void)loadView { 
[super loadView]; 
self.informationButton = [[UIBarButtonItem alloc] initWithCustomView:[UIButton buttonWithType:UIButtonTypeInfoLight]]; 
} 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
self.navigationItem.leftBarButtonItem = self.informationButton; 
self.informationButton.target = self; 
self.informationButton.action = @selector(showHelpInfo); 
} 

-(void)showHelpInfo { 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Test" 
               message:@"Test" 
               delegate:nil 
             cancelButtonTitle:@"cansel" 
             otherButtonTitles:nil, nil]; 
[alert show]; 
} 

然後我點擊我的informationButton UIAlertView中不顯示。有我的錯誤?

回答

2

你的UIButton是現在調度動作和事件的東西,因爲UIBarButtonItem只是它的一個容器。所以,當你點擊那個按鈕時,就是攔截觸摸事件的UIButton。只需製作一個與UIBarButtonItem具有相同動作的UIButton對象即可。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UIButton *iButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
    [iButton addTarget:self action:@selector(showHelpInfo) forControlEvents:UIControlEventTouchUpInside]; 
    self.informationButton = [[UIBarButtonItem alloc] initWithCustomView:iButton]; 
    self.navigationItem.leftBarButtonItem = self.informationButton; 
} 
1

您需要設置UIButton的目標是showHelpInfo選擇...