隐藏以编程方式创建的标签UIButton

时间:2013-03-05 01:56:18

标签: ios xcode uibutton

目前,我使用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)

这段代码完美无缺,但它隐藏了错误的按钮组。 (隐藏_buttonOne而不是letterButton)。

我想知道在笔尖中创建12个按钮并手动命名它们是不是更好......永远不会有或多或少12个。

3 个答案:

答案 0 :(得分:9)

点击按钮后,您可以在操作方法的hidden参数上设置sender属性,该参数是实际点击的按钮。这将隐藏被点击的按钮。

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

如果您要检索标记为3的按钮,则可以使用此代码:

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

我建议您不要使用tag属性 - 您应该使用Interface Builder和IBOutletCollection代替。

答案 1 :(得分:2)

喜欢这个

UIButton *yourBtn = (UIButton *)[self.view viewWithTag:3];
[yourBtn setHidden:YES];

答案 2 :(得分:1)

您可以通过标记获取视图使用此消息。

[self.view viewWithTag:3];

我们总是按照

的特定标记
#define kFirstButtonTag (100)

或使用

#define kButtonBeginTag (100)

然后使用宏来获取标记。

并且在一个特殊的数字 - 案例0,1或2总是使用,开始你的标签在一个特殊的数字可以避免一些问题