【发布时间】:2010-11-18 06:43:55
【问题描述】:
有没有办法隐藏或显示 UIBarButtonItem?
【问题讨论】:
-
我们可以通过将导航项的属性设置为 nil 来隐藏导航项,只要我们想显示它,我们就可以在条件中写入,以便我们可以显示按钮。
标签: iphone ipad uibarbuttonitem
有没有办法隐藏或显示 UIBarButtonItem?
【问题讨论】:
标签: iphone ipad uibarbuttonitem
使用它来隐藏 barbutton 项。
self.navigationItem.rightBarButtonItem = nil;
【讨论】:
实际上,UIBarButtonItem 并没有响应 .hidden。它不是 UIButton 的子类。
这是一个快速示例,说明如何切换三个按钮:左键、中键和右键。
//所以,在合适的地方
IBOutlet UIToolbar *bottomToolbar;
IBOutlet UIBarButtonItem *leftButton;
IBOutlet UIBarButtonItem *flexerSpace;
IBOutlet UIBarButtonItem *middleButton;
IBOutlet UIBarButtonItem *rightButton;
//然后这个在合适的地方
@property (retain, nonatomic) IBOutlet UIToolbar *bottomToolbar;
@property (retain, nonatomic) IBOutlet UIBarButtonItem *leftButton;
@property (retain, nonatomic) IBOutlet UIBarButtonItem *flexerSpace;
@property (retain, nonatomic) IBOutlet UIBarButtonItem *middleButton;
@property (retain, nonatomic) IBOutlet UIBarButtonItem *rightButton;
//然后在合适的地方
@synthesize bottomToolbar;
@synthesize leftButton;
@synthesize flexerSpace;
@synthesize middleButton;
@synthesize rightButton;
然后在 IB 或 Xcode4 IB 中重新加载你的类
// 然后在你的
view_switcher/控制器方法
-(IBAction)switchToLeft:(id)sender {
NSArray *newButtonArray = [NSArray arrayWithObjects: middleButton, flexerSpace, rightButton, nil];
[bottomToolbar setItems:newButtonArray animated:NO]; //YES or NO either way it
}
-(IBAction)switchToMiddle:(id)sender {
NSArray *newButtonArray = [NSArray arrayWithObjects: leftButton, flexerSpace, rightButton, nil];
[bottomToolbar setItems:newButtonArray animated:NO]; //YES or NO either way it
}
-(IBAction)switchToRight:(id)sender {
NSArray *newButtonArray = [NSArray arrayWithObjects: leftButton, flexerSpace, middleButton, nil];
[bottomToolbar setItems:newButtonArray animated:NO]; //YES or NO either way it
}
然后连接按钮并添加您的视图切换,应该这样做......
假设你可以填写一些部分
【讨论】:
这是我的 UIBarButtonItem 子类,用于公开 setHidden 方法。每当我的栏上有一个“可选”按钮时,我都会使用它。 它适用于文本或图像按钮。
class AltoUIBarButtonItem: UIBarButtonItem {
var originalImage : UIImage?
var originalTitle : String?
override func awakeFromNib() {
originalTitle = self.title
originalImage = self.image
}
func setHidden(_ hidden: Bool)
{
if hidden
{
if originalImage != nil { self.image = nil}
if originalTitle != nil { self.title = ""}
self.isEnabled = false
}
else
{
if originalImage != nil { self.image = originalImage}
if originalTitle != nil { self.title = originalTitle}
self.isEnabled = true
}
}
func setOriginalTitle(_ originalTitle: String?)
{
self.originalTitle = originalTitle
}
}
【讨论】: