1

ここで私のアプリケーションはボタン12個のボタンのセットを持っています.ボタンのタイトルはデフォルトで非表示になっています.ボタンのタイトルはクリックすると表示されます.

-(IBAction)buttonAction:(id)sender
{
    UIButton *button = (UIButton *)sender;
    int index = button.tag;
    [self showing:index]; //now, this method accepts a parameter.
}

-(void)showing:(NSInteger)index
{
UIButton* btn = nil;
index = index - 1;
NSArray* subViewArray = [self.view subviews];

NSInteger i = 0;

for (UIView *view in subViewArray)
{
    if ([view isKindOfClass:[UIButton class]])
    {
        btn = (UIButton*) view;
        if(btn.tag >= 1 && btn.tag <= 16)
        {
            NSString* text;
            UIButton *prevButton = (UIButton*) [self.view viewWithTag:previousButtonTag];
            if (i == index) {

                if ([btn.titleLabel.text isEqualToString:prevButton.titleLabel.text])
                {

                }
                else
                {
                    text=@"";
                }
            text = [texts objectAtIndex:i]; //put the array that you are using
        }
        else {
            text = @"";
        }

        i++;

        [btn setTitle:text forState:UIControlStateNormal];
        }
    }// end of IF
} //end of FOR

}

1.2つのボタンタイトルの値を比較して、等しいかどうかを確認したい.Imは問題に直面しています,

2.ボタンのタイトルのみが表示され、他のボタンをクリックすると前のタイトルが非表示になり、クリック時に2つのボタンのタイトルを有効にしたいのですが、間違っている場合は非表示にする必要があります。この問題を解決する方法を教えてください。必要に応じて

4

3 に答える 3

0

ボタンタグをインデックスとして使用して、配列文字列の値を単純に比較してみませんか?

NSString * firstString = [self.textArray objectAtIndex:btn.tag];
NSString * secondString = [self.textArray objectAtIndex:prevButton.tag];
if([firstString isEquleToString:secondString]){

}else{

} 
于 2012-11-07T05:26:12.487 に答える
0

このコードでいくつかの変更を行います。要件を理解し、前のボタンと現在のボタンのタイトルを表示するためのロジックを追加するだけです..

    -(void) showing:(NSInteger)index
    {
        UIButton* btn = nil;
        index = index - 1; 
        NSArray* subViewArray = [self.view subviews];
        NSInteger i = 0;

        UIButton *btnCurTemp = (UIButton *)[self.view viewWithTag:index];


        for (UIView *view in subViewArray) 
        {
            if ([view isKindOfClass:[UIButton class]]) 
            {
                btn = (UIButton*) view;
                NSString* text;
                if (i == index) {
                    text = [self.textArray objectAtIndex:i]; //put the array that you are using
                    [btnCurTemp setTitle:text forState:UIControlStateNormal];
                    UIButton *btnPrevTemp = (UIButton *)[self.view viewWithTag:self.prevButtonTag];

                  if ([btnCurTemp.titleLabel.text isEqualToString:btnPrevTemp.titleLabel.text]) {
                     /// visible your both button title..
                 }
                 else {
                     //// hide button title..
                 }
                    self.previousButtonTag = i; //make a class variable

                }else {
                    text = @"";
                }
                i++;

            }
        } 
    } 
于 2012-11-07T05:24:36.190 に答える
0

あなたのようなものを変更してくださいshowing

-(void) showing:(NSInteger)index
{
  UIButton *btn = (UIButton*) [self.view viewWithTag:index];
  NSString *text = [self.textArray objectAtIndex:index]; //put the array that you are using
  [btn setTitle:text forState:UIControlStateNormal];
  if (self.previousButtonTag != -1)
  {
     UIButton *prevButton = (UIButton*) [self.view viewWithTag:previousButtonTag];
     if ([btn.titleLabel.text isEqualToString:prevButton.titleLabel.text])
     {
     }
     else
     {
       //hide the prevButton
       [prevButton setTitle:@"" forState:UIControlStateNormal];
     }
   }
  self.previousButtonTag = index; //make a class variable
}

IButton *btn = (UIButton*) [self.view viewWithTag:index];現在クリックされているボタンが表示されます。UIButton *prevButton = (UIButton*) [self.view viewWithTag:previousButtonTag];前にクリックしたボタンを表示します。必要に応じて、if条件でタイトルを確認できます。等しい場合はそこで処理を行い、等しくない場合は前のボタンのタイトルを非表示にします。

前のボタンタグを -1 に初期化する必要がありますviewDidLoad

于 2012-11-07T04:48:21.227 に答える