0
これはウェブブラウザに関するものです。サブビューを削除できませんか?
私はウェブページを扱うカスタムクラスを持っています。
SNBrowserView
SNBrowserViewPage
SNBrowserViewPagesには2つのオブジェクトがあります。
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がnilに設定されていない場合も、それはから削除されたページを復元しようとすると、スーパービュー。
これはどのように可能ですか?
がさえ、これは動作しません。
- (void)recoverAnimated:(BOOL)animated
{
_snapshotView = nil;
[_snapshotView removeFromSuperview];
}
snapshotViewがサブビューで、removeFromSuperviewは常に動作するはずです、なぜそれにMOREありますか?
'_snapshotView = nil'を呼び出す前に' [_snapshotView removeFromSuperview] 'を呼び出せますか? – Randy
私はこの間違いを何度も何度もやってきました....それは今働きます! – Vulkan