1

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

5 回答 5

4

从头开始,如果要隐藏按钮,请将其属性设置hidden为 YES,否则如果要使其重新出现,则将属性设置为 NO。

例子:

button1.hidden=YES;
button1.hidden=NO;
于 2013-05-25T12:33:32.453 回答
1

你的代码基本上是正确的

-(void)buttonTouch:(id)sender {
    _button1.hidden =  !_button1.hidden;
}

此代码将在显示时隐藏您的按钮,并在隐藏时显示它。这应该是正确的。

你是说

然后通过单击另一个按钮,它将出现

您确定两个按钮都将 touch-up-inside 事件正确连接到此操作吗?我想你的问题buttonTouch:是当你触摸另一个按钮时没有调用。

于 2013-05-25T13:57:52.290 回答
0

我会尽量按照我的理解正确回答这个问题。

2 个按钮,按钮 1 和按钮 2。按下 button1 隐藏自身并显示 button2。按下 button2 会隐藏自身并再次显示 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];
}

这应该允许您在按钮之间来回翻转,使它们相互隐藏/显示。

于 2013-05-25T14:05:35.667 回答
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; }
 }
于 2013-05-25T12:32:27.130 回答
-2

所呈现的代码存在两个明显的问题。

1) Cocoa 对非 TRUE 和 FALSE 的布尔值使用 YES 和 NO。

2)您已经声明了一个属性,因此您应该优先使用它而不是合成实例变量。

3)你的按钮触摸方法应该在实现和界面中返回 IBAction 。

不知道这是否能解决您的问题,但这是修复代码的第一步。

@synthesize button1=_button1;

-(BOOL)hideOutlets {

    self.button1.hidden=YES;

}

-(IBAction)buttonTouch:(id)sender {

    self.button1.hidden =  !self.button1.hidden;
}
于 2013-05-25T12:41:48.623 回答