我有两个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()
内实施,才能正确符合协议。
答案 0 :(得分:0)
您确定为第一个ViewController设置了委托吗?首先,ViewController需要具有URLRequestDelegate类型的属性,并且您需要在某个时刻将该属性设置为等于第二个ViewController。