跨不同的viewControllers使用相同的UIWebView

TL; DR:我需要实现跨多个ViewController共享的单例UIWebVIew。 这个问题包含了我所有的方法。

的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]; } 

在第一个视图控制器中,我加载了我的单页应用程序,该应用程序首先显示post列表。 然后,用户查看其中一个post,他将被redirect到第二个视图控制器。 我想重用在第二个ViewController的第一个ViewController中使用的UIWebView,所以我不必重新加载网页。

问题是,在addSubview后UIWebView似乎并没有加载。 我只看到一个我用作容器的UIView 。 如果你能给我一些debugging点,这将是非常有帮助的。

在这里输入图像说明

我终于想通了。 即使在从FirstViewController删除UIWebView实例后,保留计数始终为2。 我从故事板中删除了UIWebView ,并在加载firstViewController时以编程方式创build它。 我把所有的东西都留下了。 最后我可以开始重用webView