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];
}
}
我的第一个 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];
}
}