隐藏按钮Obj-C

时间:2013-05-25 12:29:51

标签: objective-c cocoa-touch

我想在我的手机应用程序上隐藏一个按钮,然后点击另一个按钮就会出现。我已经设法让按钮消失,只需点击一下,但无法弄清楚相反的情况。我也是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;
}

5 个答案:

答案 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;
}