Подтвердить что ты не робот

Использование одного и того же UIWebView для разных viewControllers

TL; DR: Мне нужно реализовать одноэлементный UIWebVIew, который делится на несколько ViewControllers. Вопрос содержит все мои подходы до сих пор.

AppDelegate:

@property (strong, nonatomic) UIWebView *singleWebView;

firstViewController:

@property (weak, nonatomic) IBOutlet UIWebView *webView;

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear: animated];
    NSLog(@"Removing webview from the first VC");

    [self.webView removeFromSuperview];
    self.webView.delegate = nil;

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    appDelegate.singleWebView = self.webView;

    self.webView = nil;
}

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
    NSURL *URL = [request URL];

    if ([[URL absoluteString] isEqualToString:@"myapp://postsShow"]) {
        [self performSegueWithIdentifier:@"postsShowSegue" sender:self];
        return false;
    }
    return true;
}

PostsShowViewController

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [self.viewContainer addSubview: appDelegate.singleWebView];
}

В первом представлении контроллера я загружаю одностраничное приложение, в котором сначала отображается список сообщений. Затем пользователь просматривает один из сообщений, и он будет перенаправлен во второй контроллер просмотра. Я хочу повторно использовать UIWebView, который использовался в первом ViewController во втором ViewController, поэтому мне не нужно перезагружать веб-страницу.

Проблема заключается в том, что после addSubview UIWebView не загружается. Я вижу только UIView, который я использую в качестве контейнера. Было бы очень полезно, если бы вы могли дать мне несколько точек отладки.

введите описание изображения здесь

4b9b3361

Ответ 1

Я, наконец, понял. Счет удержания всегда равнялся 2, даже после того, как я удалил экземпляр UIWebView из FirstViewController. Я удалил UIWebView из раскадровки и создал его программно, когда был загружен FirstViewController. Я оставил все остальное же. Наконец, я мог бы начать повторное использование webView.