此处有n UIButtons
,在选择特定UIButtons
时,它会从SuperView
中删除。其余按钮框架移动到此点。同样尝试用选定的按钮替换其他按钮的标签。这是我到目前为止所尝试的。
-(void)totesttheFunction
{
for(int i=0; i<7; i++)
{
UIButton *testHere = (UIButton*)[self.view viewWithTag:i];
if([testHere isSelected])
{
int backuptagFor = testHere.tag;
CGFloat diff = 30.0;
for(int j=i+1; j<7;j++)
{
UIButton *btnToReplace = (UIButton*)[self.view viewWithTag:j];
CGRect setRect = CGRectMake(btnToReplace.frame.origin.x-diff, btnToReplace.frame.origin.y, btnToReplace.frame.size.width, btnToReplace.frame.size.height);
btnToReplace.tag = backuptagFor;
[testHere removeFromSuperview];
}
}
}
}
这里整数变量差异是两个相邻UIButtons之间的帧差异。
答案 0 :(得分:2)
我不知道您使用此代码的目的是什么。
但是UICollectionView将是解决问题的更好方法。 在collectionview单元格中添加多个按钮。 然后集合视图本身将管理每个单元格的删除和索引。
答案 1 :(得分:0)
根据我的理解,解决方案如下所示。
添加要查看的按钮
for (int i=0; i<7; i++) {
UIButton *btn = [[UIButton alloc]init];
btn.tag=i;
CGRect frame=CGRectMake(0, i*40, 90, 37);
[btn addTarget:self action:@selector(btnDidPressed:) forControlEvents:UIControlEventTouchUpInside];
[btn setFrame:frame];
[btn setTitle:[NSString stringWithFormat:@"Button %d",i] forState:UIControlStateNormal];
[self.view addSubview:btn];
}
删除按下的按钮
-(IBAction)btnDidPressed:(id)sender
{
UIButton *btn =(UIButton *)sender;
[btn removeFromSuperview];
}
此外,您可以在视图子视图中重新排列按钮或在数组中存储按钮。按下按钮删除所选按钮并重绘剩余按钮。
答案 2 :(得分:0)
初始化存储按钮的数组。 [data addObject:btn]在viewdidload方法中。
然后您可以删除所选内容并替换下面的其他按钮。 btnDidPressed方法:
UIButton *btn =(UIButton *)sender; //Pressed button
CGRect rect = btn.frame; //pressed button frame
CGRect temp ;
int tag =btn.tag; //pressed button tag
[btn removeFromSuperview]; //remove from view
[arr removeObjectAtIndex:tag]; //remove from array
for (int i =0; i<arr.count; i++) {
UIButton *btnNew = [arr objectAtIndex:i];
NSLog(@"tags old %d new %d",tag,btnNew.tag);
if (btnNew.tag>tag) { //be sure not to move previous buttons
temp = btnNew.frame;
[btnNew setFrame:rect];
btnNew.tag=i; //change tag
rect = temp;
[self.view addSubview:btnNew];
}
}