如何解除代码生成的子视图?

A3O*_*A3O -1 objective-c uiviewcontroller uiview ios

在我的项目中,我想在第一次启动应用程序时显示第一个运行视图.为此,我在我的mainViewCntroller.m中添加了一个UIView.为了忽略这个(重叠)视图,我在视图上放了一个名为acceptButton的按钮.我必须添加什么代码才能从堆栈中删除此视图?

我做错了什么?

这是我的代码:

- (void) firstRun {
if (((AppDelegate*)[UIApplication sharedApplication].delegate).firstRun)
{
    CGFloat height = [[UIScreen mainScreen] bounds].size.height;
    CGFloat width = [[UIScreen mainScreen] bounds].size.width;

    NSLog(@"%f", height);

    CGRect myFrame = CGRectMake(0, 0, width, height);
    UIView *myView = [[UIView alloc] initWithFrame:myFrame];
    myView.backgroundColor = [UIColor scrollViewTexturedBackgroundColor];
    myView.tag = 12345;
    [self.view addSubview:myView];

    // Create a ScrollView and a label
     UIScrollView *discScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(20.0f, 0.0f, self.view.frame.size.width - 20, self.view.frame.size.height -70)];
     discScroll.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

     UILabel *discLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];
     discLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

     NSString *labelText = NSLocalizedString (@"InfoText",@"");
     [discLabel setText:labelText];

     // Tell the label to use an unlimited number of lines
     [discLabel setNumberOfLines:0];
     [discLabel setNumberOfLines:0];
     [discLabel setBackgroundColor:[UIColor clearColor]];
     [discLabel setFont:[UIFont boldSystemFontOfSize:17]];
     discLabel.textColor = [UIColor colorWithRed:255 green:255 blue:255 alpha:1.0];
     //[infoLabel sizeToFit];

     CGSize infoLabelSize = [discLabel.text sizeWithFont:discLabel.font
     constrainedToSize:CGSizeMake(discScroll.frame.size.width, 5000)
     lineBreakMode:UILineBreakModeWordWrap];

     discLabel.frame = CGRectMake(0, 0, infoLabelSize.width, infoLabelSize.height);
     discScroll.contentSize = infoLabelSize;

     [discScroll addSubview:discLabel];

     [self.view addSubview:discScroll];

    UIButton *acceptButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    acceptButton.frame = CGRectMake(110, [[UIScreen mainScreen] bounds].size.height - 74, 100, 44);
    // position in the parent view and set the size of the button
    [acceptButton setTitle:@"Click Me!" forState:UIControlStateNormal];
    // add targets and actions
    [acceptButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    // add to a view
    [self.view addSubview:acceptButton];


}
}

-(IBAction)buttonClicked:(id)sender
{

[[self.myView viewWithTag:12345] removeFromSuperview];

}
Run Code Online (Sandbox Code Playgroud)

在我的mainViewController.h中有以下属性:

@property (weak, nonatomic) IBOutlet UIView *myView;
Run Code Online (Sandbox Code Playgroud)

编辑我发布了完整的代码.也许还有别的东西在路上.

小智 6

我已经在Xcode中编写了它,以下代码适用于我.

我开了一个新的XCode项目(基于单一视图),刚刚添加了以下代码:

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];

    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    myView.backgroundColor = [UIColor scrollViewTexturedBackgroundColor];
    myView.tag = 12345;
    [self.view addSubview:myView];

    UIButton *acceptButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    acceptButton.frame = CGRectMake(0, 0, 100, 44);
    [acceptButton setTitle:@"Click Me!" forState:UIControlStateNormal];
    [acceptButton addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside];
    [myView addSubview:acceptButton];

    [myView release];


}

- (void)buttonClicked{
    [[self.view viewWithTag:12345] removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)

这对我在iPhone模拟器中工作....只是在MainViewController.m中的这个代码没有其他...只是尝试一下,希望它也适合你:-)