所以在我的UIViewControllerA上我有一个按钮的代码:
- (IBAction)buttonClickHandler:(id)sender {
dyf_FacebookViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Facebook"];
[self.view addSubview:controller.view];
}
加载由UIViewControllerB处理的UIView。现在这个视图可以被许多不同的ViewControllers调用为子视图,这就是我将它从超级视图中删除的原因。
所以在UIViewControllerB上我有这个代码:
- (IBAction)close:(id)sender {
[self.view removeFromSuperview];
}
不幸的是,返回时出现错误的访问错误。请帮忙!
由于
编辑:
添加的子视图(子视图的viewcontroller)将控制其自身,因为它控制着子视图上的按钮。因此,我无权访问ViewControllerA中的原始controller.view变量
答案 0 :(得分:1)
您必须保留对dyf_FacebookViewController对象的引用,以便执行以下操作:
- (IBAction)close:(id)sender {
[controller.view removeFromSuperview];
}
您现在正在做的是从超级视图中删除主视图,这可能会产生严重后果,从而导致您无法访问。
答案 1 :(得分:0)
如果要删除添加的视图,请保留视图控制器的副本...
// in this VC.m
@interface
@property (nonatomic, strong) dyf_FacebookViewController *dyfController;
@end
- (IBAction)buttonClickHandler:(id)sender {
self.dyfController = [self.storyboard instantiateViewControllerWithIdentifier:@"Facebook"];
[self.view addSubview:self.dyfController.view];
}
稍后,关闭视图...
[self.dyfController.view removeFromSuperview];
答案 2 :(得分:0)
if ([controller.view superView]) {
[controller.view removeFromSuperview];
}
答案 3 :(得分:0)
试试这个
- (IBAction)close:(id)sender {
for (UIView *subView in self.view.subviews) {
[subView removeFromSuperview];
}
}