我正在 UIView 中创建多个 UIButton。有两个嵌套循环,以创建具有不同形状的不同按钮组。问题是,只有最后创建的 UIButton 是可见的(并且可以使用 PanGestureRecognizer 移动),即使按钮应该插入不同的位置也是如此。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
int i, j;
NSMutableString *backgoundImageName = [[NSMutableString alloc] init];
NSMutableString *barTitle = [[NSMutableString alloc] init];
sticks = [[NSMutableArray alloc] init];
[mainView setBackgroundColor:[UIColor blackColor]];
self.view = mainView;
[mainView setNeedsDisplay];
//create the bars
UIButton *barra = [UIButton buttonWithType:UIButtonTypeRoundedRect];
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[barra addTarget:self action:@selector(changeButtonTitle:) forControlEvents:UIControlEventTouchUpInside];
[barra addGestureRecognizer:panGestureRecognizer];
for (j = 1; j <= 10; j++) {
backgoundImageName = [NSMutableString stringWithFormat:@"Regolo%d%@",j,@".png"];
for (i = 1; i <= 3; i++) {
barra.frame = CGRectMake((SQUARE_SIZE * j), (SQUARE_SIZE * 2), SQUARE_SIZE, (SQUARE_SIZE * j));
[barra setBackgroundImage:[UIImage imageNamed:backgoundImageName] forState:UIControlStateNormal];
[barra setTag:j];
barTitle = [NSMutableString stringWithFormat:@"%d",j];
[barra setTitle:barTitle forState:UIControlStateNormal];
[barra setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[sticks addObject:barra];
[self.mainView addSubview:(UIButton *)sticks.lastObject];
}
}
}
最佳答案
移动这段代码:
UIButton *barra = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[barra addTarget:self action:@selector(changeButtonTitle:) forControlEvents:UIControlEventTouchUpInside];
[barra addGestureRecognizer:panGestureRecognizer];
在你的内部 for 循环中。
您有一个对象 (UIButton *barra),您在一个循环中更改其属性,所以我认为最后所有按钮都堆叠在最后一个按钮的框架位置(以及最终背景,标题, 以及标记值), 只有最上面的是可见的。
关于ios - 创建多个 UIButtons 但只有最后一个可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12353378/