1

iPhoneアプリのボタンを非表示にしてから、別のボタンをクリックすると表示されます。ボタンをクリックして非表示にすることはできましたが、その逆はわかりません。おそらくおわかりのように、私は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
 @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;たい場合は、表示されている場合にのみ非表示にする場合は put に移動し、使用します

-(void)buttonTouch:(id)sender {
if(_button1.hidden == YES) 
    {
        _button1.hidden = NO; 
    }
else { _button1.hidden = YES; }
 }
于 2013-05-25T12:32:27.130 に答える
0

私はそれを理解しているので、質問に正しく答えようとします。

ボタン 1 とボタン 2 の 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 に答える
-2

提示されたコードには 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 に答える