在我的第一个具有属性
的ViewController中@property (nonatomic, strong) UIView* snapShotView;
我打电话给
self.snapShotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:YES];
[self.view addSubview: self.snapShotView];
然后我在它上面展示两个viewcontrollers并再次解雇它们。当我回到第一个viewController时,snapShotView属性为空,但视图仍然显示。我想删除snapShotView,但我不再有参考。
如果我只在第一个ViewController顶部显示一个ViewController并将其关闭,则该属性仍引用正确的视图。如果我在其上面显示并关闭另一个视图,则一旦另外两个ViewControllers被解除,该属性为null。
如何引用和删除snapshoView?
答案 0 :(得分:0)
你丢失了对subView的引用真的很奇怪,但是如果你丢失了对subView的引用,那么如果你不能删除你添加的subView,那么你的问题是什么? ,我说你不需要引用来从视图中删除subView:)
你可以这样做:)
[[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
此语句将从视图中删除所有子视图,而不引用:)
如果您在视图中添加了多个视图,并希望仅删除特定视图,请使用标记:)
self.snapShotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:YES];
self.snapShotView.tag = someValue;
[self.view addSubview: self.snapShotView];
并在删除时
for (UIView *view in [self.view subviews]) {
if (view.tag == someValue) {
[view removeFromSuperview];
}
}