我想在单击 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 的子类),代码将编译并运行,尽管它可能看起来很不稳定。另一种选择是删除右侧或左侧的按钮并将中心按钮放在那里。
这是我的代码....
- (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 的子类),代码将编译并运行,尽管它可能看起来很不稳定。另一种选择是删除右侧或左侧的按钮并将中心按钮放在那里。