无法删除子视图?

问题描述:

这是关于一个web浏览器。无法删除子视图?

我有一个处理网页的自定义类。

SNBrowserView 
SNBrowserViewPage 

SNBrowserViewPages有两个对象。

WKWebView 
UIImageView // Snapshot of the WKWebView 

函数可以维持或恢复内存管理的页面。

(测试)无论何时选择页面,我都会调用恢复功能。

选择:

- (void)browserView:(SNBrowserView *)browserView didSelectPage:(SNBrowserViewPage *)page 
{ 
     if (page.sustained) { 

      [page recoverAnimated:NO]; 
     } 
} 

延:

- (void)sustain 
{ 
    _sustained = YES; 

    if (_webView) { 

     _webView = nil; 

     [_webView removeFromSuperview]; 
    } 

    _snapshotView = [[UIImageView alloc] init]; 

    _snapshotView.frame = CGRectMake(0.0, 0.0, self.frame.size.width, self.frame.size.height); 

    _snapshotView.image = _snapshot; 

    [self addSubview:_snapshotView]; 
} 

恢复:

- (void)recoverAnimated:(BOOL)animated 
{ 
    _sustained = NO; 

    _webView = [[WKWebView alloc] init]; 

    _webView.frame = CGRectMake(0.0, 0.0, self.frame.size.width, self.frame.size.height); 

    _webView.navigationDelegate = self; 

    _webView.UIDelegate = self; 

    [self addSubview:_webView]; 

    [self sendSubviewToBack:_webView]; 

    [self loadURL:_initialURL]; // Start loading as early as possible. 

    if (animated) { 

     [UIView animateWithDuration:0.3 
         animations:^{ 

          _snapshotView.alpha = 0.0; 
         } 
         completion:^(BOOL finished){ 

          _snapshotView = nil; 

          [_snapshotView removeFromSuperview]; 
         }]; 
    } 
    else { 

     _snapshotView = nil; 

     [_snapshotView removeFromSuperview]; 
    } 
} 

当我尝试恢复页面snapshotView没有设置为无,也不是从去除超级观点。

这怎么可能?

即使这是行不通的:

- (void)recoverAnimated:(BOOL)animated 
{ 
    _snapshotView = nil; 

    [_snapshotView removeFromSuperview]; 
} 

的snapshotView是一个子视图,removeFromSuperview应该总是工作,为什么会出现更多呢?

+1

你可以尝试在调用'_snapshotView = nil'之前调用'[_snapshotView removeFromSuperview]'? – Randy

+0

我一直在做这个错误一遍又一遍....它现在可行! – Vulkan

我建议你尝试,因为你正在做的是设置_viewnil,然后从上海华盈删除nil

[_view removeFromSuperview]; 

_view = nil; 

更换所有的

_view = nil; 

[_view removeFromSuperview];