2013-06-17 4 views
0

Я создал UIToolBar с UIBarButtonItems, но когда я нажимаю их, селектор не вызывается. Любая помощь будет принята с благодарностью.UIBarButtonItems не вызывает действия

UPDATE

На основе предложений в комментариях, я изменил мой код, но, к сожалению, кнопки по-прежнему не работают.

-(void)buildBottomMenu 
{ 
    UIImage *newsImg = [UIImage imageNamed:@"243-globe"]; 
    UIBarButtonItem *newsBtnItem = [[UIBarButtonItem alloc] initWithImage:newsImg style:UIBarButtonItemStylePlain target:self action:@selector(loadHome)]; 

    UIImage *weatherImg = [UIImage imageNamed:@"25-weather"]; 
    UIBarButtonItem *weatherBtnItem = [[UIBarButtonItem alloc] initWithImage:weatherImg style:UIBarButtonItemStylePlain target:self action:@selector(loadWeather)]; 

    UIImage *sportsImg = [UIImage imageNamed:@"63-runner"]; 
    UIBarButtonItem *sportsBtnItem = [[UIBarButtonItem alloc] initWithImage:sportsImg style:UIBarButtonItemStylePlain target:self action:@selector(loadSports)]; 

    UIImage *entrnImg = [UIImage imageNamed:@"178-city"]; 
    UIBarButtonItem *entrnBtnItem = [[UIBarButtonItem alloc] initWithImage:entrnImg style:UIBarButtonItemStylePlain target:self action:@selector(loadEntertainment)]; 

    UIImage *videoImg = [UIImage imageNamed:@"69-display"]; 
    UIBarButtonItem *videoBtnItem = [[UIBarButtonItem alloc] initWithImage:videoImg style:UIBarButtonItemStylePlain target:self action:@selector(loadVideoPage)]; 

    UIImage *moreImg = [UIImage imageNamed:@"259-list"]; 
    UIBarButtonItem *moreBtnItem = [[UIBarButtonItem alloc] initWithImage:moreImg style:UIBarButtonItemStylePlain target:self action:@selector(loadOptionsPage)]; 

    UIBarButtonItem* flexibleSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
                       target:nil action:nil]; 

    [_bottomBar setItems:[NSArray arrayWithObjects:flexibleSpace,newsBtnItem,flexibleSpace, 
         weatherBtnItem,flexibleSpace, 
         sportsBtnItem,flexibleSpace, 
         entrnBtnItem,flexibleSpace, 
         videoBtnItem,flexibleSpace, 
         moreBtnItem,flexibleSpace, 
         nil]]; 

    [self.view addSubview:_bottomBar]; 
} 

Вот селектор выборки:

- (void)loadWeather 
{ 
    NSLog(@"Loading weather"); 
} 
+0

Почему вы создаете объекты 'UIButton' для размещения на панели инструментов? Попробуйте создать 'UIBarButtonItem' с помощью метода initWithImage .... – rmaddy

+0

также убедитесь, что выбранные вами селекторы не принимают никаких параметров. Если вы хотите передать отправителя селектору с параметром 'loadOptionsPage: (id) отправителя, обязательно включите трейлинг-двоеточие в имена вашего селектора. например '@selector (loadOptionsPage:)' – atreat

+0

Спасибо за предложение @rmaddy, я внес изменения, но все еще не повезло с работающими кнопками. atreat, селекторы не принимают параметры. –

ответ

0

спасибо за помощь, но я просто понял, что это было то, что я делал в моем методе viewDidLayoutSubviews, который вызывает проблему.

0

Попробуйте это,

-> Первый Дрог и падение UIToolbar к вашему ViewController.xib

-> подключить IBOutlet соединение

ViewController.h

IBOutlet UIToolbar *_bottomBar; 

ViewController.m

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
[self buildBottomMenu]; 
// Do any additional setup after loading the view, typically from a nib. 
} 


-(void)buildBottomMenu 
{ 
UIImage *newsImg = [UIImage imageNamed:@"243-globe"]; 
UIBarButtonItem *newsBtnItem = [[UIBarButtonItem alloc] initWithImage:newsImg style:UIBarButtonItemStylePlain target:self action:@selector(loadHome)]; 

UIImage *weatherImg = [UIImage imageNamed:@"25-weather"]; 
UIBarButtonItem *weatherBtnItem = [[UIBarButtonItem alloc] initWithImage:weatherImg style:UIBarButtonItemStylePlain target:self action:@selector(loadWeather)]; 

UIImage *sportsImg = [UIImage imageNamed:@"63-runner"]; 
UIBarButtonItem *sportsBtnItem = [[UIBarButtonItem alloc] initWithImage:sportsImg style:UIBarButtonItemStylePlain target:self action:@selector(loadSports)]; 

UIImage *entrnImg = [UIImage imageNamed:@"178-city"]; 
UIBarButtonItem *entrnBtnItem = [[UIBarButtonItem alloc] initWithImage:entrnImg style:UIBarButtonItemStylePlain target:self action:@selector(loadEntertainment)]; 

UIImage *videoImg = [UIImage imageNamed:@"69-display"]; 
UIBarButtonItem *videoBtnItem = [[UIBarButtonItem alloc] initWithImage:videoImg style:UIBarButtonItemStylePlain target:self action:@selector(loadVideoPage)]; 

UIImage *moreImg = [UIImage imageNamed:@"259-list"]; 
UIBarButtonItem *moreBtnItem = [[UIBarButtonItem alloc] initWithImage:moreImg style:UIBarButtonItemStylePlain target:self action:@selector(loadOptionsPage)]; 

UIBarButtonItem* flexibleSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
                      target:nil action:nil]; 

[_bottomBar setItems:[NSArray arrayWithObjects:flexibleSpace,newsBtnItem,flexibleSpace, 
        weatherBtnItem,flexibleSpace, 
        sportsBtnItem,flexibleSpace, 
        entrnBtnItem,flexibleSpace, 
        videoBtnItem,flexibleSpace, 
        moreBtnItem,flexibleSpace, 
        nil]]; 

[self.view addSubview:_bottomBar]; 
} 



- (void)loadWeather 
{ 
    NSLog(@"Loading weather"); 
} 
Смежные вопросы