繁体   English   中英

从超级视图中删除视图时出错

[英]Error when remove a view from superview

我是 iOS 开发的新手,遇到问题想问你。

我的目的是在基本视图上显示一个视图(不是全屏),并且仍然在子视图外的背面看到父级。 所以我在当前 viewController 上添加了一个子视图(UIViewController 的子类),然后我打开子视图:

AViewController *a = [[AViewController alloc] initWithNibName:nil bundle:nil];
[self.view addSubView:a.view];
[a release];

在这里它可以正常工作并按我的预期显示此子视图。 在这个子视图上,我有关闭按钮来关闭这个子视图并在子视图上这样做:

- (IBAction)BackTouchUp:(id)sender 
{
    [self.view removeFromSuperview];
}

当我单击关闭按钮时,出现错误 EXC_BAD_ACCESS。 当我删除父级上的 [a release] 命令时,它可以工作,但存在 memory 泄漏。

你能为我解释一下这个错误的原因以及如何解决这个问题吗?

你可以设置一个视图标签没有

[a.view setTag:3];
uiView *f=[self.view viewWithTag:3];
[f removeFromSuperview];

我想这会解决你的问题

在接口和实现中定义AViewController object (AViewController *a),初始化值如下:

a = [[AViewController alloc] initWithNibName:nil bundle:nil];

[self.view addSubView:a.view];

每当您想删除时,只需将[a removeFromSuperview]放入 dealloc

[a release];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM