gpt4 book ai didi

ios - 在后台加载一个 View (及其 WebView 对象),然后执行 Segue

转载 作者:搜寻专家 更新时间:2023-11-01 05:43:14 33 4
gpt4 key购买 nike

我有一个导航 Controller ,它通过 segue 管理两个 Web View 。当有人在第一个 View Controller 中单击特定链接时,该链接将在另一个 Web View 的第二个 View Controller 中打开。因此,用户单击一个链接,执行到下一个 View 的 segue 并加载新页面。

我希望 segue 等到第二个 View Controller 中的网页在执行 segue 之前加载到后台。

我尝试做这样的事情(作为 viewDidLoad 函数中的 loadURL 请求)但是(如我所料)我得到一个错误( fatal error :无法解包 Optional.None),因为 webView 尚未加载!任何人都知道如何防止这种情况?

//code 
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if(segue.identifier == "second"){
segue.destinationViewController.load()
segue.destinationViewController.viewDidLoad()
}
}

最佳答案

我会试试这个:

  • 在第一个 View Controller 中创建一个虚拟 webview(未添加到主视图的 webview)。
  • 在同一个 VC 中,当用户单击链接时,在虚拟 webview 上开始 loadRequest
  • 然后在(第一个 VC 的)webViewDidFinishLoad 中调用 performSegue
  • prepareForSegue 中将虚拟 webView 添加到第二个 View Controller 主视图(使用 addSubView)

我注意到 webViewDidFinishLoadcalled multiple times并且您必须添加一些代码才能真正知道加载何时完成(而不是多次调用 prepareForSegue)。

这不是很简单,但希望对您有所帮助。

编辑:

这是代码的(原始)示例,我已经对其进行了测试并且可以正常工作,但是您必须调整一些东西(例如 View 的尺寸和 finishLoad 东西)(操作按钮的 openPage):

class DetailViewController: UIViewController, UIWebViewDelegate {

var dummyWebViewInFirstVC: UIWebView = UIWebView(frame: CGRectMake(0, 0, 320, 480))
var done = false

@IBAction func openPage(sender: AnyObject) {


let url = NSURL(string: "http://www.apple.com/")
let request = NSURLRequest(URL: url)
dummyWebViewInFirstVC.loadRequest(request)
}

override func viewDidLoad() {
super.viewDidLoad()

dummyWebViewInFirstVC.delegate = self
}

func webViewDidFinishLoad(theWebView: UIWebView) {

if !done {
self.performSegueWithIdentifier("openPage", sender: self)
done = true;
}
}

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {

let secondViewController : UIViewController = segue.destinationViewController as UIViewController
secondViewController.view.addSubview(dummyWebViewInFirstVC)
}
}

关于ios - 在后台加载一个 View (及其 WebView 对象),然后执行 Segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25034515/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com