0
這是關於一個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應該總是工作,爲什麼會出現更多呢?
你可以嘗試在調用'_snapshotView = nil'之前調用'[_snapshotView removeFromSuperview]'? – Randy
我一直在做這個錯誤一遍又一遍....它現在可行! – Vulkan