以编程方式创建一些UIButton并稍后使用标记重建对象?

时间:2015-05-14 15:34:28

标签: ios objective-c uibutton

我正在以编程方式创建几个按钮,类似于:

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];
}

而且我可以通过这种方式实现按钮的功能,以便我知道女巫被点击了:

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

但我的问题比这更棘手,我不想只是访问它的按钮方法中的按钮,而且还要在它之外,以便我可以使用动画更改UIButton框架。

我在想,我应该能够以某种方式重新创建指向以前使用我最初分配的标签创建的任何按钮的指针。 有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

正确的方法是使用下一行代码:

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

其中aTag是一个int并且大于0,因为默认情况下所有视图都有标记0,因此在首先使用的for循环中,计数应该从最小值1开始。在我们的例子中,aTag具有值在我们改变for循环之后从1到6。

此外,不应该有更多具有相同标签的视图。