如何在视图中隐藏(完成)栏按钮项? 基本上,我有一个视图控制器添加了导航栏(在IB中)然后,我还在导航栏中添加了一个条形按钮项。 我只是想最初隐藏的(完成)条形按钮项目。当输入在文本视图中时,(完成)按钮已经可见。
在视图控制器上有关此实现的任何想法吗?
这是我的示例代码:
@interface MyTextViewViewController : UIViewController <UITextViewDelegate>
{
UITextView *m_textView;
UIBarButtonItem *doneBarButtonItem;
}
@property(nonatomic,retain) IBOutlet UITextView *m_textView;
@property(nonatomic,retain) IBOutlet UIBarButtonItem *doneBarButtonItem;
- (IBAction)saveAction:(id)sender;
.m文件:
- (void)viewDidLoad {
[super viewDidLoad];
doneBarButtonItem.hidden = YES; --> compile error!!!
}
- (void)textViewDidBeginEditing:(UITextView *)textView
{
doneBarButtonItem.hidden = NO; --> compile error!!!
}
- (IBAction)saveAction:(id)sender
{
doneBarButtonItem.hidden = YES; --> compile error!!!
...
}
答案 0 :(得分:3)
您可以使用以下技巧:
这对我有用。
答案 1 :(得分:1)
这个应该完美地工作并具有相同的用户效果
doneBarButtonItem.enabled = NO;
另一个解决方案是仅在用户已输入内容时添加,并在没有任何内容时将其删除
答案 2 :(得分:0)
您可以调整背景位置来完成此操作:
[doneBarButtonItem setBackgroundVerticalPositionAdjustment:1000000 forBarMetrics:1000000];
将背景位置的偏移设置为一个非常大的值以隐藏它。
[doneBarButtonItem setBackgroundVerticalPositionAdjustment:0.0000000000001 forBarMetrics:0.0000000000000001];
然后像这样切换回来。
注意:您必须将两个偏移设置为大于0的值才能取回按钮,否则它将不会显示。
答案 3 :(得分:0)
上述选项均不适合我。干净的方法是将IBOutlet放到工具栏上,并使用setItems方法从中添加/删除按钮。 当按钮被隐藏时,我保持对它的强烈引用,所以我可以稍后再显示它。 此代码假定您为此RootViewController设置了xib,其中包含您希望稍后隐藏/显示的工具栏和条形按钮。
@interface RootViewController()
@property (weak, nonatomic) IBOutlet UIToolbar *toolbar;
@property (nonatomic, strong) UIBarButtonItem * barButtonItem;
@end
- (void) showSettingsBarButtonItem{
NSMutableArray * toolbarButtonItems = [NSMutableArray arrayWithArray:
[self.toolbar items]];
bool found = NO;
for(UIBarButtonItem * tmpButton in toolbarButtonItems){
if([tmpButton tag] == 500){ //settings button.
//keep it
found = YES;
break;
}
}
if(found == NO){
[toolbarButtonItems insertObject:self.barButtonItem atIndex:1]; //insert item at index you like.
[self.toolbar setItems:toolbarButtonItems];
}
}
- (void) hideSettingsBarButtonItem{
NSMutableArray * toolbarButtonItems = [NSMutableArray arrayWithArray:
[self.toolbar items]];
bool found = NO;
for(UIBarButtonItem * tmpButton in toolbarButtonItems){
if([tmpButton tag] == 500){ //settings button tag. set in IB.
found = YES;
self.barButtonItem = tmpButton; //save it for later.
//should keep a reference to your VC.
[toolbarButtonItems removeObject:tmpButton];
break;
}
}
if(found == YES){
[self.toolbar setItems:toolbarButtonItems];
}
}