• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 从 UIViewController 中删除 subview

[复制链接]
菜鸟教程小白 发表于 2022-12-12 09:57:41 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在向主视图添加一个 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap