Ios 预加载UIWebView

Ios 预加载UIWebView,ios,swift,uiwebview,Ios,Swift,Uiwebview,我在代码中尝试预加载UIWebView,但没有任何结果。 我弄不清代码中有什么错误 第一个UIViewController func viewDidLoad(){ let gallery = storyboard?.instantiateViewControllerWithIdentifier("Gallery") as! GalleryViewController gallery.loadwWebView() } func loadwWebView(){ let webView = UIW

我在代码中尝试预加载UIWebView,但没有任何结果。 我弄不清代码中有什么错误

第一个UIViewController

func viewDidLoad(){
let gallery = storyboard?.instantiateViewControllerWithIdentifier("Gallery") as! GalleryViewController

gallery.loadwWebView()
}
func loadwWebView(){
let webView = UIWebView(frame: CGRect(x: 0, y: 0, width: view.bounds.size.width, height: view.bounds.size.height))

webView.loadRequest(NSURLRequest(URL: NSURL(string: "https://www.google.com")!))

self.view.addSubview(webView)

}
在第二个UIViewController中

func viewDidLoad(){
let gallery = storyboard?.instantiateViewControllerWithIdentifier("Gallery") as! GalleryViewController

gallery.loadwWebView()
}
func loadwWebView(){
let webView = UIWebView(frame: CGRect(x: 0, y: 0, width: view.bounds.size.width, height: view.bounds.size.height))

webView.loadRequest(NSURLRequest(URL: NSURL(string: "https://www.google.com")!))

self.view.addSubview(webView)

}

我选择了通过编程方式创建
UIWebView
的方法,因为如果我使用@IBOutlet,它将崩溃。

问题是您正在实例化一个库,而这个库反过来又创建了一个web视图,但是
gallery
是一个局部变量,当它超出范围时将被释放

您需要保留对此视图控制器的引用(例如,使其成为当前视图控制器的属性)。如果这样做,则需要确保在转换到此视图控制器时,不使用segue(因为这将创建第二个视图控制器的第二个实例),而是以编程方式转换到已实例化的视图控制器


您可能还希望保存对添加到第二个视图控制器的视图层次结构中的web视图的引用,因为否则您将无法再次引用它(或者至少在没有一些繁琐的子视图枚举的情况下是如此)。

问题是您正在实例化一个库,而该库又在创建一个web视图,但是
gallery
是一个局部变量,当它超出范围时将被释放

您需要保留对此视图控制器的引用(例如,使其成为当前视图控制器的属性)。如果这样做,则需要确保在转换到此视图控制器时,不使用segue(因为这将创建第二个视图控制器的第二个实例),而是以编程方式转换到已实例化的视图控制器


您可能还希望保存对添加到第二个视图控制器的视图层次结构中的web视图的引用,因为否则您将无法再次引用它(或者至少在没有一些繁琐的子视图枚举的情况下无法再次引用)。

为什么不尝试使用NSNotification center来实现您的概念,这是另一种选择,您可以显示崩溃报告没有错误,它不会显示打印
self.view中的
loadwWebView
。。。如果它都是0,请尝试在
视图中调用它将出现
/
视图显示
。在
视图显示
中调用您的方法,然后再试一次。为什么您没有在NSNotification center中尝试您的概念,这是另一种选择您可以显示崩溃报告无错误,在
loadwWebView
中,它不显示打印
self.view
的维度。。。如果全部为0,请尝试在
viewwillbeen
/
viewdidebeen
中调用它。在
viewdidebeen
中调用您的方法,然后重试一次