使用普通按钮即可
btn.selected =!btn.selected。
我如何用UIBarButton解决这个问题?
答案 0 :(得分:2)
您可以在UIBarItem中使用自定义按钮,只需按一下按钮即可。
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:self.yourButton]
[self.navigationItem setRightBarButtonItem:barButton];
然后:
self.yourButton.select = !self.yourButton.select;
答案 1 :(得分:2)
您可以使用自定义视图
创建UIBarButtonItemUIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:normalImage forState:UIControlStateNormal];
[button setImage:selectedImage forState:UIControlStateSelected];
[button addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:button];
然后
-(void)btnClick:(id)sender{
UIBarButtonItem *item = (UIBarButtonItem *)sender;
UIButton *button = (UIButton *)item.customView;
[button setIsSelected:YES];
}
答案 2 :(得分:1)
创意1.如果要在IB中创建界面,请尝试将标准UIButton对象拖动到UIToolbar中。这应该将UIButton封装在UIBarButton中。 将UIBarButton对象设置为plain。 像往常一样为一切创造出路。 然后,您可以使用标准按钮以及所有可爱的标准内容,例如工具栏中的选定状态。
想法2.我几乎放弃了使用工具栏,因为你找到的控件是不灵活的。现在我只是用UIViews替换UIToolbar的实例,如果需要管理旋转,调整大小等代码,那就做少量...我发现它更灵活,让我更容易包含其他控件。
答案 3 :(得分:1)
不可能立即通过UIBarButtonItem获取所选属性。但是你可以通过放置UIButton并像UIBarbutton那样自定义它来实现这一点。此链接对您更有用...... How do I programmatically get the state of UIBarButtonItems?