2014-02-10 56 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