2014-02-10 58 views
0

-(void)createTurtle是一个定时器动作删除随机生成按钮

-(void)createTurtle { 
    NSUInteger r = arc4random_uniform(284) + 1; 

    int storedIntegerFromTurtle = [[NSUserDefaults standardUserDefaults] integerForKey:@"savedTurtleTag"]; 

    turtle = [[UIButton alloc] init]; 
    turtle.frame = CGRectMake(r, -50, 36, 47); 
    [turtle setImage:[UIImage imageNamed:@"turtle.png"] forState:UIControlStateNormal]; 
    [turtle addTarget:self action:@selector(turtleTouched:) forControlEvents:UIControlEventTouchDown]; 
    [turtle setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
    [turtle setTag:storedIntegerFromTurtle+1]; 
    [self.view bringSubviewToFront:turtle]; 
    [self.view addSubview:turtle]; 


    [[NSUserDefaults standardUserDefaults] setInteger:turtle.tag forKey:@"savedTurtleTag"]; 
    NSLog(@"%i", turtle.tag); 


    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:15]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 

    turtle.frame = CGRectMake(turtle.frame.origin.x, self.view.frame.size.height, 36, 47); 
    [UIView commitAnimations]; 
} 

而且通过点击就可以了,我会删除所选的按钮:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    CGPoint p =[((UITouch *)[touches anyObject]) locationInView:self.view]; 
    CGRect r= [turtle.layer.presentationLayer frame]; 

    int selectedTurtleTag; 

    if (CGRectContainsPoint(r, p)) 
    { 
     selectedTurtleTag = turtle.tag; 
    } 

    BOOL contains= CGRectContainsPoint(r, p); 
    if(contains) 
    { 
     if (turtle.tag == selectedTurtleTag) 
     { 
      NSLog(@"Turtle-Tag: %i", selectedTurtleTag); 
      [[self.view viewWithTag:selectedTurtleTag] removeFromSuperview]; 
     } 
    } 
} 

我的问题是,我只能删除最新创建按钮。 我会删除任何被点击的按钮。

+0

你为什么不创建一个数组来容纳所有的“乌龟”。然后你可以得到一个句柄,而不必使用标记符号。从数组和屏幕删除任何你想要的东西。 – Putz1103

+0

是的,你是对的。谢谢 ! –

回答

0

它看起来像你有一个属性叫乌龟。当你创建一个随机乌龟时,实例变量只引用该乌龟,因为那时你刚刚分配/启动它。所以,最后创建的乌龟总是被称为乌龟,这就是为什么这只适用于最后一个(你使用turtle.tag,在这一点上乌龟只是最后一个。)我会建议一个NSMutableArray的乌龟和添加新创建的龟在createTurtle中的数组;然后在触摸中循环通过你的龟的数组开始找到哪个龟被挖掘。

+0

太棒了!谢谢。有用!对不起,我的英语不好,但我来自德国 –

+0

很高兴我能帮忙!祝你好运。 – eric42bass