Laur Stefan
Laur Stefan

Reputation: 1589

Create a few UIButton programmatically and reconstruct the object later using tag?

I am creating a few buttons programmatically, similar to:

for( int i = 0; i < 5; i++ ) {
  UIButton* aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  [aButton setTag:i];
  [aButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
  [aView addSubview:aButton];
}

And that I can implement the function of the button this way so that I know witch one was tapped:

- (void)buttonClicked:(UIButton*)button
{
  NSLog(@"Button %ld clicked.", (long int)[button tag]);
}

But my question is a little bit trickier than that, I don't want just to access the button inside it's button method but also outside of it so that I can change the UIButton frame using an animation.

I was thinking that I should somehow be able to recreate the pointer to any of the buttons previously created by using the tags that I assign initially. Can anyone point me in the right direction?

Upvotes: 0

Views: 62

Answers (1)

Laur Stefan
Laur Stefan

Reputation: 1589

The correct way to do this is by using the next line of code:

UIButton *aButtonReconstruct = (UIButton *)[self.view viewWithTag:aTag];

where aTag is an int and is greater than 0, because all the views have the tag 0 by default, so in the for loop used in the first place, the count should start at minimum 1. In our case aTag having values from 1 to 6 after we change the for loop.

Also there shouldn't be more view with the same tag.

Upvotes: 2

Related Questions