2015-09-01 2 views
11

TL; DR: Мне нужно реализовать одноэлементный UIWebVIew, общий для нескольких ViewControllers. Вопрос содержит все мои подходы до сих пор.Использование того же 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, который я использую в качестве контейнера. Было бы очень полезно, если бы вы могли дать мне несколько точек отладки.

enter image description here

+0

Вы пытались установить размер отображаемого вида? Каков его размер? – Shripada

+0

@Shripada Отредактировано с большим количеством журналов –

+0

Я боюсь, что веб-просмотр не будет работать правильно, если плохо обращаться с этим способом ... вы пытались установитьNeedsDisplay? на webview –

ответ

1

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

Смежные вопросы