2012-01-14 78 views
1

我创建了一个解开编程和做动作如何通过一个按钮来消失的UIView点击

{ 
UIButton *myButton1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    myButton1.frame = CGRectMake(20, 20, 80, 44); 
    [myButton1 setTitle:@"Click Me!" forState:UIControlStateNormal]; 
    [myButton1 addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:myButton1]; 
} 

和IBAction为我有一个UIView作为这样

- (IBAction)buttonClicked:(id)sender 
{ 
    CGRect myFrame = CGRectMake(0, 300, 100, 50); 
    UIView *myView = [[UIView alloc] initWithFrame:myFrame]; 
    myView.backgroundColor = [UIColor lightGrayColor]; 
    [self.view addSubview:myView]; 
    [myView release]; 
} 

我现在想子视图当用户第二次按myButton1时子视图必须消失。我怎样才能做到这一点?

回答

2

做一些修正在我们的代码 -

**Action like this -** 

- (IBAction)buttonClicked:(id)sender 
{ 
    UIView *myView; 
    if([self.view viewWithTag:56]) 
    { 
    [[self.view viewWithTag:56] removeFromSuperview]; 
    } 
    else 
    { 
    CGRect myFrame = CGRectMake(0, 300, 100, 50); 
    myView = [[UIView alloc] initWithFrame:myFrame]; 
    myView.backgroundColor = [UIColor lightGrayColor]; 
    [myView setTag:56]; 
    [self.view addSubview:myView]; 
    [myView release]; 
    } 
} 
+0

thanx Dipak。工作正常 – jason 2012-01-19 08:07:03

2

您可以使用[view removeFromSuperView]方法删除视图。

+0

但是当我使用这个子视图没有显示在所有。我希望子视图必须先显示按钮时单击。当用户再次按下按钮子视图时不得不消失 – jason 2012-01-14 08:39:43

1

将您的buttonClicked:方法更改为此。

- (void)buttonClicked:(id)sender 
{ 
UIView *myView; 
if(myView=[self.view viewWithTag:1234]) 
{ 
    [myView removeFromSuperview]; 
} 
else { 
    CGRect myFrame = CGRectMake(0, 300, 100, 50); 
    myView= [[UIView alloc] initWithFrame:myFrame]; 
    [myView setTag:1234]; 
    myView.backgroundColor = [UIColor lightGrayColor]; 
    [self.view addSubview:myView]; 
    [myView release]; 
} 
[self.view setNeedsDisplay]; 
} 

编辑:如果您使用IBAction并且不使用界面生成器它不读好。

+0

仍然无法正常工作。 – jason 2012-01-14 09:48:24

+0

@jason尝试编辑。当你这样做时发生了什么?它是否在方法中正确添加了视图?记录everthing查看流量。 – MadhavanRP 2012-01-14 23:05:11

+0

现在反向工作!在第一次点击视图中不显示。通过第二次点击它出现。 – jason 2012-01-18 09:16:58