UIViewController 丢失 属性

UIViewController loses track of property

我的第一个 ViewController 属性

@property (nonatomic, strong) UIView* snapShotView;

然后我打电话给

self.snapShotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:YES];
[self.view addSubview: self.snapShotView];

然后我在它上面显示两个视图控制器并再次关闭它们。当我回到第一个 viewController 时,snapShotView 属性 是空的,但视图仍然显示。我想删除 snapShotView,但我不再有参考。

如果我只在第一个 ViewController 之上显示一个 ViewController 并关闭它,属性 仍然引用正确的视图。如果我在其上呈现并关闭另一个视图,则在关闭另外两个 ViewController 后 属性 为空。

如何引用和删除 snapshoView?

丢失对 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];
     }
}