UIViewController失去了对财产的追踪

时间:2016-05-06 07:07:10

标签: ios objective-c iphone uiviewcontroller snapshot

在我的第一个具有属性

的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?

1 个答案:

答案 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];
     }
}