2016-04-07 22 views
0

私は最初のViewControllerにUIWebViewを持っています。ユーザーがUIWebView内のリンクをクリックすると、新しいViewController(InfoViewControllerなど) InfoViewController内の新しいUIWebViewのURL。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をロードしようとするたびに実行されます。チェックする場合は、画面を変更し、falseを返すことによって、URLを読み込むから現在のWebViewのを防ぐために、それは彼らがクリックしたリンクであることを確認し、あなたのコードを実行するために追加することができます。

//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

私の更新された答えを見て、メソッド名が間違っている、WebViewNewsではなく、メソッドを呼び出す必要があります。今すぐお試しください –

+0

ありがとうございました。あなたは私の人生を救う。 – Hani

0
  1. あなたはあなたの最初のUIWebViewからのリンクをプルする必要があります。 iPhone - UIWebview - Get the URL of the link clicked
  2. が新しいのViewControllerを開き、合格文字列。
  3. 2番目のUIWebviewにURLを開くよう指示します。
関連する問題