-1

我在for循环中手动添加了按钮,之后如何隐藏或更改按钮和隐藏标签?

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(80.0, 170, 150.0, 30.0);
[button setTitle:@"My Button" forState:UIControlStateNormal];
[button addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];

UILabel *lblFileName = [[UILabel alloc] init];
lblFileName.text = [[objectArray objectAtIndex:i] valueForKey:@"fileName"];
lblFileName.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:lblFileName];

-(IBAction)myAction:(id)sender
{
    // hide the button or change title button and hide label
}
4

6 回答 6

2

如果您要添加buttons & labelsfor loop请尝试以下解决方案。

button.tag = i + 1;//0 is default tag for all views.
lblFileName.tag = i + 1;

-(IBAction)myAction:(id)sender
{
    UIButton *btn= (UIButton *)sender;
    [btn setHidden:YES];// hide the button
    btn.titleLabel.text = [[objectArray objectAtIndex:[sender tag]] valueForKey:@"fileName"];

     //Get the label of selected button using button tag.
    [[self.view viewWithTag:[sender tag]] setHidden:YES];

}
于 2013-05-22T05:50:44.303 回答
0
-(IBAction)myAction:(id)sender
{
    // hide the button or change title button
[button setHidden:YES];
}
于 2013-05-22T05:51:50.097 回答
0

在 myAction:(id)sender 中,发件人是您的按钮。

- (IBAction)myAction:(id)sender {
       [sender setHidden:YES];
}

但在这种情况下,您无法再使按钮可见,因为您没有引用它。我认为为按钮创建一个属性会更好。

于 2013-05-22T05:51:58.917 回答
0
-(IBAction)btn:(id)sender
{

   btn.hidden=YES;
}

试试这个。

于 2013-05-22T05:52:54.017 回答
0

其他回答者已经展示了sender您想要的按钮如何,但是如果您想以不同的方法访问按钮(例如,如果您想让它再次可见),您将需要在创建按钮的对象上创建一个属性.

为此,请将其放在您的班级中@interface

@property (strong) UIButton *myButton;

@synthesize它在你的@implementation

@implementation WhateverClass
@synthesize myButton = _myButton;

然后您可以将属性设置为您的自定义按钮:

self.myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.myButton.frame = CGRectMake(80.0, 170, 150.0, 30.0);
[self.myButton setTitle:@"My Button" forState:UIControlStateNormal];
[self.myButton addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.myButton];

并在任何地方(创建后)访问它,如下所示:

-(IBAction)myAction:(id)sender
{
    [self.myButton setTitle:@"Pressed!" forState:UIControlStateNormal];
    [self.myButton setHidden:YES];
}
于 2013-05-22T06:03:24.607 回答
0

像 Girish 所说的那样,为每个按钮和标签提供唯一的标签。没有两个标签不应该是相同的。

假设您有 10 个按钮和 10 个标签。然后为按钮 1 到 10 和标签 11 到 20 提供标签。

然后在您的方法上,您可以使用相应的标签访问任何标签或按钮。

UIButton *button=(UIButton *)[self.view viewWithTag:1];
UILabel *label=(UILabel *)[self.view viewWithTag:11];
于 2013-05-22T07:14:06.710 回答