5

現在、forループを使用してプログラムで作成されている14個のボタンがあります。以下のコードを使用してください。

int buttonCount = 14;
for (int i=0; i< buttonCount; i++) {             
    
//Create titleString from array object
    NSString *stringFromInt = [NSString stringWithFormat:@"%@",[arrayForRound objectAtIndex:i]];
        

        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        
        [button addTarget:self
                   action:@selector(buttonSelected:)
         forControlEvents:UIControlEventTouchDown];

        [button setTitle:stringFromInt forState:UIControlStateNormal];

        button.titleLabel.font = [UIFont fontWithName:@"helvetica" size:19];
        button.tag = i;
        
        [self.view addSubview:button];
}

これはボタンを作成するのに最適です。次に、選択したボタンの値を回答ボックスに入力できます。

-(void)buttonSelected: (UIButton *)sender
{
[_buttonOne setTitle:sender.titleLabel.text forState:UIControlStateNormal];
}

ただし、ボタンが入力されたら、画面からボタンを削除したいと思います。button.hiddenを呼び出すと、プログラムで作成された最後のボタンが非表示になります。私はbutton.tagを知っていて、これを使おうとしましたが、次のようなことをする必要があるように感じます。

//Hide button for tag (i know this is incorrect syntax)
button for buttonTag: 3 setHidden;

これに似たものや方法はありますか?

アップデート

非表示にしようとしているボタンは、プログラムで作成されたボタンです。したがって、_buttonOneに作成ボタンのタイトルを付けて(そのletterButtonと呼びましょう)、ビューからletterButtonを非表示にします。

UIButton *yourBtn = (UIButton *)[self.button viewWithTag:3];
[yourBtn setHidden:YES];
(code posted by Oh Seung Kwon)

このコードは完全に機能しますが、間違ったボタンのセットを隠します。(letterButtonではなく_buttonOneを非表示にします)。

ペン先に12個のボタンを作成し、手動で名前を付ける方がよいのではないかと思います...12個を超えることはありません。

4

3 に答える 3

9

ボタンをタップすると、実際にタップされたボタンであるhiddenアクションメソッドの引数にプロパティを設定できます。senderタップしたボタンが非表示になります。

- (void)buttonSelected:(UIButton *)sender {
   [_buttonOne setTitle:sender.titleLabel.text forState:UIControlStateNormal];
   [sender setHidden:YES];
}

タグがのボタンを取得する場合は3、代わりに次のコードを使用できます。

[[self.view viewWithTag:3] setHidden:YES];

プロパティを使用することはお勧めしません。代わりにtagInterfaceBuilderを使用する必要がありますIBOutletCollection

于 2013-03-05T02:05:03.643 に答える
2

このような

UIButton *yourBtn = (UIButton *)[self.view viewWithTag:3];
[yourBtn setHidden:YES];
于 2013-03-05T02:04:44.733 に答える
1

このメッセージを使用してタグでビューを取得できます。

[self.view viewWithTag:3];

いつものようにマクロでタグを特定します

#define kFirstButtonTag (100)

または使用する

#define kButtonBeginTag (100)

次に、マクロを使用してタグを取得します。

そして、特別な番号で-ケース0、1、または2が常に使用されます。タグを特別な番号で開始すると、いくつかの問題を回避できます。

于 2013-03-05T03:08:12.953 に答える