OGeek|极客世界-中国程序员成长平台

标题: ios - 从 UIViewController 中删除 subview [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 09:57
标题: ios - 从 UIViewController 中删除 subview

我正在向主视图添加一个 subview ,但我无法从该 View 中删除它。

NextViewController *nextView = [[NextViewController alloc] init];

nextView.transitioningDelegate = self;
nextView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.presentedViewController.view addSubview:nextView.view];
nextView.view.frame = CGRectMake(724, 80, 300, 150);

UIButton *stayButton = [[UIButton alloc] initWithFrame:CGRectMake(101, 94, 90, 49)];
[stayButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[stayButton setTitle"Detener" forState:UIControlStateNormal];
[stayButton addTarget:self
           actionselector(waitForNextView)
 forControlEvents:UIControlEventTouchUpInside];
[nextView.view addSubview:stayButton];
stayButton.titleLabel.font = [UIFont systemFontOfSize:25];
[stayButton setTitleColor:[UIColor colorWithRed255/255.0) green255/255.0) blue255/255.0) alpha:1] forState:UIControlStateNormal];

这里我在 View 中添加了一个按钮,然后当按下按钮时它就会消失`-

(void)waitForNextView{
    transition = NO;
    NextViewController *nextView = [[NextViewController alloc] init];
    SectionViewController *sectionView = [[SectionViewController alloc]init];
    [self.locationManager stopRangingBeaconsInRegion:self.beaconRegion];
    actualSection = 0;
    [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selectorselector(dismissView2) userInfo:nil repeats:NO];
}

我试过了:

[nextView.view removeFromSuperView];

[nextView.presentedViewController removeFromParentViewController];

但我不知道我还能做什么:S

如果您想了解更多信息,nextView 是一个 300x100 大小的 UIViewController。我想展示它,然后在我按下按钮时将其移除,仅此而已。

如果有人可以帮助我,我会很棒。

谢谢



Best Answer-推荐答案


您正在创建不同的引用,然后您尝试将其从其 super View 中删除,而根本没有添加。我将尝试解释: 1. 当您将 nextView.view 添加到 self.view 时,您已经创建了这样的实例

NextViewController *nextView = [[NextViewController alloc] init];

2。当您尝试删除它时,不是引用上面的实例,而是在 waitForNextView 方法中再次创建一个全新的实例,就像这样

 NextViewController *nextView = [[NextViewController alloc] init];

然后您尝试将其删除。请注意,nextView 的最后一个实例尚未添加到任何地方,这就是您的代码不起作用的原因。

为了工作,您应该引用您添加到 self.view 的第一个引用。请调整您的代码如下所示

在你的 ViewController.m

@interface ViewController()
{
 NextViewController *nextView;
}

当添加你的 viewController

nextView = [[NextViewController alloc] init];

nextView.transitioningDelegate = self;
nextView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.presentedViewController.view addSubview:nextView.view];
nextView.view.frame = CGRectMake(724, 80, 300, 150);

UIButton *stayButton = [[UIButton alloc] initWithFrame:CGRectMake(101, 94, 90, 49)];
[stayButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[stayButton setTitle"Detener" forState:UIControlStateNormal];
[stayButton addTarget:self
           actionselector(waitForNextView)
 forControlEvents:UIControlEventTouchUpInside];
[nextView.view addSubview:stayButton];
stayButton.titleLabel.font = [UIFont systemFontOfSize:25];
[stayButton setTitleColor:[UIColor colorWithRed255/255.0) green255/255.0) blue255/255.0) alpha:1] forState:UIControlStateNormal];

最后在你的 IBAction 方法中

-(void)waitForNextView{
    transition = NO;
    [self.locationManager stopRangingBeaconsInRegion:self.beaconRegion];
    actualSection = 0;
    [nextView removeFromSuperview];
}

关于ios - 从 UIViewController 中删除 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23763662/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4