webView.loadRequest()未在iOS Swift中正确加载网页

时间:2014-08-18 17:31:13

标签: ios swift

我有两个ViewControllers,我试图通过委托传递NSURLRequest。 这是代表:

protocol URLRequestDelegate{

    func urlRequest(url: NSURLRequest)
}

委托成功传递NSURLRequest,因为我检错了。 但是在ViewController中,委托正在传递NSURLRequest,我已经实现了所需的函数以符合我使用函数webView.loadRequest()加载带有所需网页的webView的协议。

webView是通过代码而非故事板完成的:

var webView: UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width, height: UIScreen.mainScreen().bounds.height))

这是该功能:

func urlRequest(url: NSURLRequest) {

    //Load URL from the delegate.
    webView.loadRequest(url)
}

但这不会加载带有委托中传递的NSURLRequest的UIWebView,我认为委托方法func urlRequest()没有正确调用,也可能在{{1}之前调用方法。

我甚至设置了viewDidLoad()并在此课程上实施了self.view.webView.delegate = self并实施了UIWebViewDelegate& func viewDidStartLoad() fun viewDidFinishLoad内有println()来检查代码是否在我拨打webView.loadRequest(url)时运行但是它们似乎从未被打印过。

所以这让我感到困惑,因为我不太确定导致.loadRequest()无法在委托方法func urlRequest()内正常运行的原因。

我知道如果我将.loadRequest()放在viewDidLoad()之内,让我们说http://www.google.com的硬编码网址确实有效。但是,我无法通过NSURLRequest中的代理人viewDidLoad(),因为必须在func urlRequest()内实施,才能正确符合协议。

1 个答案:

答案 0 :(得分:0)

您确定为第一个ViewController设置了委托吗?首先,ViewController需要具有URLRequestDelegate类型的属性,并且您需要在某个时刻将该属性设置为等于第二个ViewController。