Ios 跨不同的ViewController使用相同的UIWebView

Ios 跨不同的ViewController使用相同的UIWebView,ios,objective-c,swift,uiwebview,Ios,Objective C,Swift,Uiwebview,TL;DR:我需要实现一个跨多个ViewController共享的单例UIWebVIew。这个问题包含了我目前为止的所有方法 appDelegate: firstViewController: PostsShowViewController 在第一个视图控制器中,我加载我的单页应用程序,它首先显示帖子列表。然后,用户查看其中一个帖子,他将被重定向到第二个视图控制器。我想在第二个ViewController中重用第一个ViewController中使用的UIWebView,这样就不必重新加载网页

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

appDelegate:

firstViewController:

PostsShowViewController

在第一个视图控制器中,我加载我的单页应用程序,它首先显示帖子列表。然后,用户查看其中一个帖子,他将被重定向到第二个视图控制器。我想在第二个ViewController中重用第一个ViewController中使用的UIWebView,这样就不必重新加载网页

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


我终于明白了。保留计数始终为2,即使在我从
FirstViewController
中删除
UIWebView
实例之后也是如此。我从情节提要中删除了
UIWebView
,并在加载
firstViewController
时以编程方式创建了它。其他的我都没变。最后,我可以开始重用
webView

您是否尝试设置包含视图的大小?它的大小是多少?@Shripada编辑了更多的日志。我担心,如果这样虐待,网络视图将无法正常工作。。。您是否尝试设置需要的显示?在WebView上,您可以使用WebViewController来管理web视图。并实例化此控制器,无论您希望web视图位于何处,都可以从控制器进行访问。“这是一个更干净的方法。”Shripada我也会有同样的问题。
@property (strong, nonatomic) UIWebView *singleWebView;
@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;
}
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

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