我想在我的手机应用程序上隐藏一个按钮,然后点击另一个按钮就会出现。我已经设法让按钮消失,只需点击一下,但无法弄清楚相反的情况。我也是Objective-C的新手,因为你可以告诉我任何有关改进我的代码的提示都会有所帮助。谢谢!
.h:
@property(nonatomic,retain) IBOutlet UIButton* button1 ;
-(IBAction)buttonTouch:(id)sender ;
.m:
@synthesize button1=_button1;
-(BOOL)hideOutlets {
_button1.hidden=TRUE;
}
-(void)buttonTouch:(id)sender {
_button1.hidden = !_button1.hidden;
}
答案 0 :(得分:3)
从头开始,如果要隐藏按钮,请将其属性hidden
设置为YES,
否则,如果要重新显示,请将属性设置为NO。
示例:
button1.hidden=YES;
button1.hidden=NO;
答案 1 :(得分:1)
您的代码基本上是正确的
-(void)buttonTouch:(id)sender {
_button1.hidden = !_button1.hidden;
}
此代码会在显示时隐藏您的按钮,并在隐藏时显示该按钮。这应该是正确的。
你在说
然后点击另一个按钮就会出现
您确定这两个按钮都有正确连接此动作的内置触摸事件吗?我想你的问题是当你触摸另一个按钮时没有调用buttonTouch:
。
答案 2 :(得分:0)
@synthesize button1=_button1;
-(BOOL)hideOutlets {
_button1.hidden=TRUE;
}
-(void)buttonTouch:(id)sender {
_button1.hidden = FALSE; //Or "NO" or "0", it's a boolean
}
此外,它奇怪地设置了一个隐藏有BOOL
的按钮。如果你想在加载时隐藏它们,请将_button1.hidden = YES;
添加到-(void)buttonTouch:(id)sender {
if(_button1.hidden == YES)
{
_button1.hidden = NO;
}
else { _button1.hidden = YES; }
}
,如果你希望它只在你看到它时隐藏它,请使用
{{1}}
答案 3 :(得分:0)
我会尽力按照我的理解正确回答这个问题。
2个按钮,button1和button2。按下按钮1隐藏自己并显示button2。按下按钮2隐藏自己并再次显示button1。
-(IBAction)button1Pressed:(id)sender {
// button1 can only be pressed when not hidden, so we can dispense with checks for hidden
[button1 setHidden:YES];
[button2 setHidden:NO]; // assuming this button was hidden at startup
}
-(IBAction)button2Pressed:(id)sender {
// button2 can only be pressed when not hidden, so no need to check for hidden
[button2 setHidden:YES];
[button1 setHidden:NO];
}
这应该允许你在隐藏/显示彼此相反的按钮之间来回翻转。
答案 4 :(得分:-2)
代码中存在两个明显的问题。
1)Cocoa使用YES和NO表示布尔值,而不是TRUE和FALSE。
2)你已经声明了一个属性,所以你应该优先使用它来合成实例变量。
3)你的按钮触摸方法应该在实现和接口中返回IBAction。
不知道这是否能解决问题,但这是修复代码的第一步。
@synthesize button1=_button1;
-(BOOL)hideOutlets {
self.button1.hidden=YES;
}
-(IBAction)buttonTouch:(id)sender {
self.button1.hidden = !self.button1.hidden;
}