我想在单击 UIBarButtonItem 到 select 城市时显示 UIPickerView [IOS Objective C]

I want to show a UIPickerView when i click UIBarButtonItem to select a city [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 MyCityPlus[1728:251613] *** 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'-[UIBarButtonItem 框架]:无法识别的选择器发送到实例 0x16653460'

我是新手,请帮助我,我卡住了,我知道问题是当我尝试创建按钮时,我已经尝试了很多选项,但我遇到了同样的错误

所以,这里的问题是中心按钮 - 您将必须是 UIView 的 titleView 属性 设置为您的 cetnerButtonItem,这是一个 UIBarButtonItem。看起来很奇怪,UIBarButtonItem 不是 UIView 的子类。这就是您的代码抛出异常的原因。

请注意,错误只会发生在中间的按钮上,而不是左边或右边的按钮,它们应该是 UIBarButtonItem。

要解决此问题,您有几个选择:如果将 centerButtonItem 的类型更改为 UIButton(它是 UIView 的子类),代码将编译并运行,尽管它可能看起来很不稳定。另一种选择是删除右侧或左侧的按钮并将中心按钮放在那里。