gpt4 book ai didi

ios - Swift 2 - 无法在单独的 ViewController 中加载 UIWebView

转载 作者:行者123 更新时间:2023-11-29 01:14:40 24 4
gpt4 key购买 nike

我遇到了一个奇怪的问题 - 我无法在单独的 View Controller 的后台加载 UIWebView。具体来说,我有一个 UITableViewCell,它带有一个按钮,用于在它后面的 View Controller 中加载 UIWebView。但是,我不断收到错误消息“在展开可选值时发现 nil”...

这是我的代码:

func loadWebView(URLString:String) {

print("the urlstring is \(URLString)")
let theRequestURL = NSURL (string: URLString)
let theRequest = NSURLRequest (URL: theRequestURL!)

fullScreenWebView.loadRequest(theRequest)


}

打印语句生成正确的 URL,因此问题不在于未传递 URL 字符串。

此外,如果我从定义它的 View Controller 加载 UIWebView,它会完美运行。我猜这个问题与调用 loadWebView() 时不是正确的 View Controller 有关...我读过 Unable to display URL in WebView from another view controller ,这有点帮助。

我做错了什么?

最佳答案

使用

调用 loadRequest

SecondViewController().loadWebView("URL STRING HERE")

您正在创建 SecondViewController 的新实例,而不是使用已加载的实例。

您需要对已在内存中的实例调用 loadRequest,并初始化您的 UIWebView

为此,您可以获取先前 View Controller 的引用并调用方法来加载您的请求

假设 SecondViewController 是 UIWebView 的 Controller

将此添加到顶部 View Controller (带有 UITableView 的 Controller )

func loadWebView(URLString:String) {

print("the urlstring is \(URLString)")
let theRequestURL = NSURL (string: URLString)
if let theRequest = NSURLRequest (URL: theRequestURL!) {

//In case you push view controller on a navigation stack
let vc : SecondViewController = self.backViewController()

vc.loadWebView(theRequest)
}
}

//Get previous view controller on navigation stack
func backViewController() -> UIViewController? {
if let stack = self.navigationController?.viewControllers {
for(var i=stack.count-1;i>0;--i) {
if(stack[i] == self) {
return stack[i-1]
}
}
}
return nil
}

现在在您的SecondViewController中添加

func loadWebView(request : NSURLRequest) {

// Replace customWebView with the reference variable of your `UIWebView`
customWebView.loadRequest(request)
}

关于ios - Swift 2 - 无法在单独的 ViewController 中加载 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35355237/

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