我正在向主视图添加一个 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-推荐答案 strong>
您正在创建不同的引用,然后您尝试将其从其 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/
|