ios - 从 UIViewController 中删除 subview

标签 ios objective-c uiviewcontroller addsubview

我正在向主视图添加一个 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
           action:@selector(waitForNextView)
 forControlEvents:UIControlEventTouchUpInside];
[nextView.view addSubview:stayButton];
stayButton.titleLabel.font = [UIFont systemFontOfSize:25];
[stayButton setTitleColor:[UIColor colorWithRed:(255/255.0) green:(255/255.0) blue:(255/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 selector:@selector(dismissView2) userInfo:nil repeats:NO];
}

我尝试过:

[nextView.view removeFromSuperView];

[nextView.presentedViewController removeFromParentViewController];

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

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

如果有人能帮助我,我会很好。

谢谢

最佳答案

您正在创建不同的引用,然后尝试将其从其 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
           action:@selector(waitForNextView)
 forControlEvents:UIControlEventTouchUpInside];
[nextView.view addSubview:stayButton];
stayButton.titleLabel.font = [UIFont systemFontOfSize:25];
[stayButton setTitleColor:[UIColor colorWithRed:(255/255.0) green:(255/255.0) blue:(255/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/

相关文章:

ios - viewDidDisappear 永远不会在自定义选项卡中被调用

ios - 如何在 Swift 中删除属于同一对象的所有对象

ios - NSDate 如何获取当前时区的当天分数/秒

ios - 在 Objective-C 中,如何在 View Controller 中的函数之间共享数据?

objective-c - Xcode 6 Swift + Objective-C 构建问题 - 由于导入顺序导致的未知类型?

objective-c - 在 Objective-C 中接收原始以太网帧

ios - 如何仅在关闭特定 UIViewController 时才执行操作?

ios - 更改 View Controller 后 UIMenuController 不显示

iphone - AVMutableVideoComposition 以纵向模式捕获的旋转视频

ios - 在 iOS 上,当某些维度信息不可用时,我们如何在 viewDidLoad 中在屏幕上绘制内容?