2016-12-19 69 views
0

我有一个的viewController创建网页视图网页视图和加载页面这样获得从链接参数

func loadAddress(){ 
    let requestURL = NSURL(string:"http://www.example.com/") 
    let request = NSURLRequest(url: requestURL as! URL) 
    webview.loadRequest(request as URLRequest) 
} 

而且在

调用此viewDidLoad中

我在页面中有一些链接,其URL参数是这样的

http://www.example.com?id=1&title=ABC 

现在,当用户点击来自应用此链接,然后,而不是重定向到URL的,我想从URL中的参数,并打开一个对话框,在iOS中

我已经找到了目标C一些例子,但我寻找斯威夫特的解决方案3

PS:我访问该网站的HTML所要求的Xcode的

编辑我可以代替链接:以下是我已经尽力了,在同一个文件在我的网页流量是我写了这个功能

func webView(_ webView: UIWebView,shouldStartLoadWith request: URLRequest,navigationType: UIWebViewNavigationType) -> Bool { 

    let scheme = request.url! 
    NSLog(scheme.absoluteString) 

    return false 

} 

也确信类是的WebView

enter image description here

我在做什么错的委托?

+0

无关您的问题,但请注意,你不应该垂头丧气NSURL到URL或的NSURLRequest给URLRequest,[只是直接使用新的结构(HTTP: //stackoverflow.com /问题/ 37812286 /迅速-3- urlsession共享歧义引用到构件-datataskwithcomplet/37812485#37812485)。 – Moritz

+0

xcode给出了错误,并建议自己修复这个问题 –

+0

也许,但它是无关紧要的。 Xcode只是一个IDE,它并不总是正确的。实际上,有时候,这显然是错误的......;)TL; DR:当你不需要时,不要沮丧,无论Xcode告诉你什么。 – Moritz

回答

0

您应该处理webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool方法,该方法将URLRequest作为参数。 在这种方法中,你可以做任何你想要的网址。

不要忘记将您的课程设置为webview的代理。

如果你想查询字符串玩,你可以从这个objective-c answer

+0

在这个函数下,我的代码看起来像这样,让scheme = request.url! NSLog(scheme.path) 返回true –

+0

和类是webview的委托,但是当我点击链接时没有在日志中打印 –

+0

如果您编写NSLog(scheme.absoluteSring),该怎么办? –

0

得到的灵感我已经找到了解决办法我自己,我写的代码是正确的,我只是要确保我的类也实现UIWebViewDelegate

因此该类看起来像这样

class Mainbillboard: UIViewController,UIWebViewDelegate { 


@IBOutlet weak var activity: UIActivityIndicatorView! 
@IBOutlet weak var webview: UIWebView! 


override func viewDidLoad() { 
    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
    loadAddress() 
} 

func loadAddress(){ 
    let requestURL = NSURL(string:"example.com") 
    let request = NSURLRequest(url: requestURL as! URL) 
    webview.loadRequest(request as URLRequest) 

} 

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

    let scheme = request.url! 
    NSLog(scheme.absoluteString) 
    NSLog("here it worked!!") 

    return true 

} 


func webViewDidStartLoad(_:UIWebView){ 
    self.view.bringSubview(toFront: self.activity) 
    activity.startAnimating() 
    NSLog("Indicator is loading") 

} 

func webViewDidFinishLoad(_:UIWebView){ 
    activity.stopAnimating() 
    NSLog("Indicator stopped loading") 
} 

} 
+0

是的,但你说你做了3次 –