2015-02-20 1 views
-1

это мой код ....Я хочу показать UIPickerView, когда я нажимаю UIBarButtonItem для выбора города [IOS Objective C]

- (void)viewDidLoad{ 
[super viewDidLoad]; 

self.title = NSLocalizedString(@"My City +", nil); 

SWRevealViewController *revealController = [self revealViewController]; 


[revealController panGestureRecognizer]; 
[revealController tapGestureRecognizer]; 

UIBarButtonItem *centerButtonItem=[[UIBarButtonItem alloc]init]; 
[centerButtonItem setTarget:self]; 
[centerButtonItem setAction:@selector(showCitySelector:)]; 

self.navigationItem.titleView=centerButtonItem; 

UIBarButtonItem *revealButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"reveal-icon.png"]style:UIBarButtonItemStyleBordered target:revealController action:@selector(revealToggle:)]; 

self.navigationItem.leftBarButtonItem = revealButtonItem; 

self.navigationController.navigationBar.barTintColor=[UIColor colorWithRed:0.184 green:0.184 blue:0.988 alpha:1]; 
self.navigationController.navigationBar.tintColor=[UIColor whiteColor]; 
[self.navigationController.navigationBar 
setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}]; 
self.navigationController.navigationBar.translucent = NO; 
_detailTableView.backgroundColor=[UIColor colorWithRed:0.486 green:0.486 blue:0.486 alpha:1];  

UIBarButtonItem *rightRevealButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"newspaper18.png"] 
                      style:UIBarButtonItemStyleBordered target:revealController action:@selector(rightRevealToggle:)]; 

self.navigationItem.rightBarButtonItem = rightRevealButtonItem; 

}

-(IBAction)showCitySelector:(UIButton *)sender { 
if(_cityPicker.hidden) 
    _cityPicker.hidden=NO; 
else 
    _cityPicker.hidden=YES; 

}

Хорошо, проблема в этой ошибке: 2015-02-19 16: 53: 43.440 MyCityPlus [1728: 251613] - [UIBarButtonItem frame]: непризнанный селектор отправлен в пример 0x16653460 2015-02-19 16: 53: 43.446 MyCityPlu s [1728: 251613] *** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: '- [UIBarButtonItem frame]: нераспознанный селектор отправлен в экземпляр 0x16653460'

Я новичок, пожалуйста, помогите мне застрять, i знаю проблема, когда я пытаюсь создать кнопку, я уже пытаюсь так много вариантов, и у меня такая же ошибка

+0

Говорят, что вы пытаетесь получить доступ к несуществующему свойству кадра объекта UIBarButtonItem, но я не вижу этого в вашем коде ... Вы уверены, что ошибка вызвана этими строками? –

+0

Хорошо, что мне нужно добавить, потому что для rightRevealButtonItem он работает, и ничего лишнего не нужно, я просто пытаюсь понять этот код. –

ответ

1

Итак, проблема здесь в центральной кнопке - вы устанавливаете свойство titleView, которое должно быть UIView, чтобы ваш cetnerButtonItem, который является UIBarButtonItem. Как ни странно, UIBarButtonItem не является подклассом UIView. Вот почему ваш код бросает исключение.

Обратите внимание, что ошибка будет происходить только для центральной кнопки, а не для левой или правой, которая должна быть UIBarButtonItem.

Чтобы исправить это, у вас есть несколько вариантов: если вы измените тип centerButtonItem на UIButton (который является подклассом UIView), код будет скомпилирован и запущен, хотя он может выглядеть неуклюжим. Другой вариант - удалить либо кнопку справа, либо левую и поместить там свою центральную кнопку.

+0

Спасибо, что вы только что сделали мой день –

Смежные вопросы