在 swift 3 中启动应用程序时,如何在另一个 ViewController 中预加载 UIWebView?

Posted

技术标签:

【中文标题】在 swift 3 中启动应用程序时,如何在另一个 ViewController 中预加载 UIWebView?【英文标题】:How to preload a UIWebView in another ViewController when launching the application in swift 3? 【发布时间】:2017-11-02 19:23:03 【问题描述】:

我实际上在我的 ios 应用程序中使用了两个 WebView。我想在启动应用程序时在我的 SecondViewController 中预加载第二个 WebView。我尝试使用 NSNotification Center 预加载 WebView,但它不起作用。如何在 SecondViewController 中预加载 WebView?

【问题讨论】:

【参考方案1】:

我通过以下方式解决了类似的问题:

    预加载一个包含 webview 的视图控制器并将引用存储在 Appdelegate 中。 在 AppDelegate 中调用 self.preloadvc?.view.layoutSubviews() 您可以随时展示它。

似乎有必要在视图控制器中以编程方式创建 Web 视图

class AppDelegate: UIResponder, UIApplicationDelegate 

var window: UIWindow?

//
var preloadvc : PreloadVC? = nil
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 
            //Preloading
        DispatchQueue.main.async(execute: 
                    self.preloadvc = PreloadVC()
                    //Thats the trick for preloading the view
                    self.preloadvc?.view.layoutSubviews()
                )
    return true

class PreloadVC : UIViewController, UIWebViewDelegate 
var mypreloadedView: UIWebView!
override func viewDidLoad() 
    super.viewDidLoad()
    mypreloadedView = UIWebView(frame: view.frame)
    view.addSubview(mypreloadedView)
    mypreloadedView.delegate = self
    if let myurl = URL(string: "https://www.google.de") 
        let request = URLRequest(url: myurl)
        self.mypreloadedView.loadRequest(request)
    


func webViewDidFinishLoad(_ webView: UIWebView)

    print("Loaded")

随时随地展示:

@IBAction func ShowPreloaded(_ sender: Any) 
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    if let preloadedvc = appDelegate.preloadvc 
        self.present(preloadedvc, animated: true, completion: nil)
    

【讨论】:

以上是关于在 swift 3 中启动应用程序时,如何在另一个 ViewController 中预加载 UIWebView?的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一台Mac上运行Swift Terminal应用程序

Swift 3 OS X 应用程序在启动时启动

Swift 如何在另一个 UITextField 突出显示或具有值时禁用 TextField

在另一个 Swift 项目中使用自定义 Swift 框架

如何从核心数据swift中删除项目3

Swift 3 - 如何在应用程序中使用照片库图片?