2016-04-07 5 views
0

У меня есть UIWebView в моем первом ViewController, и я хочу, если пользователь нажимает на любую ссылку внутри UIWebView 1, должен открыть новый ViewController (например, InfoViewController) и передать URL-адрес нового UIWebView внутри InfoViewController.Пропустить url из UIWebView 1 в ViewController 1 в UIWebView 2 в ViewController 2

EDIT:

My Storyboard

Мой код:

class ViewController: UIViewController, UIWebViewDelegate { 

@IBOutlet weak var webview: UIWebView! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    let url = NSURL (string: "https://google.com"); 
    let requestObj = NSURLRequest(URL: url!); 
    webview.delegate = self; 
    webview.loadRequest(requestObj); 

} 

func webview(WebViewNews: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool { 

    if (navigationType == UIWebViewNavigationType.LinkClicked) { 
    //Push to new view controller here and pass new url: 
    let url = request.URL 
    let infoViewController = self.storyboard?.instantiateViewControllerWithIdentifier("InfoViewController") as! InfoViewController 
    infoViewController.passURL = url.absoluteString //Add passURL property in your InfoViewController 

    self.navigationController!.pushViewController(infoViewController, animated: true) 

    //prevent the current webview from loading the page 
    return false 
    } 

    //webview will load first time normally/other requests will load 
    return true 
} 
+0

Какие проблемы вы сталкиваетесь? –

+0

Вы пробовали мой ответ? –

ответ

1

установить Webview делегат себя:

webview.delegate = self 

И тогда вы можете добавить этот метод делегата. Это выполняется, когда он пытается загрузить URL-адрес. Вы можете добавить, если проверка, чтобы убедиться, что он ссылку они нажали и запустить свой код, чтобы изменить экран и предотвратить текущий WebView от загрузки URL, возвращая ложь:

//Update: got method name wrong: 
func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool { 

    if (navigationType == UIWebViewNavigationType.LinkClicked { 
     //Push to new view controller here and pass new url: 
     let url = request.URL 
     let infoViewController = self.storyboard?.instantiateViewControllerWithIdentifier("InfoViewController") as InfoViewController 
     infoViewController.passURL = url.absoluteString //Add passURL property in your InfoViewController 

     self.navigationController!.pushViewController(infoViewController, animated: true) 

     //prevent the current webview from loading the page 
     return false 
    } 

    //webview will load first time normally/other requests will load 
    return true 
} 
+0

Не работает, можете ли вы, пожалуйста, птенец выше моего кода, раскадровки и совета. – Hani

+0

Взгляните на мой обновленный ответ, получив неправильное имя метода, должен быть webView, а не WebViewNews и не вызывал метод. Попробуйте сейчас –

+0

Большое вам спасибо. Ты спасаешь мою жизнь. – Hani

0
  1. Вы должны вытащить ссылку с вашего первого UIWebView: iPhone - UIWebview - Get the URL of the link clicked
  2. Открыть новый ViewController и передать строка.
  3. Наведите свой второй UIWebview, чтобы открыть URL-адрес.
Смежные вопросы