2016-04-27 19 views
-2

so bin ich im Grunde ein kleiner Browser zu bauen. Auf einer VC würden Sie den Link in ein textField einfügen und eine Schaltfläche verwenden, um zu der anderen VC zu gelangen, in der das webView gefunden wird.Übergeben von Daten zwischen ViewControllern mit prepareForSegue funktioniert nicht

import Foundation 
import UIKit 

class ViewOne:UIViewController { 
    @IBOutlet weak var textField: UITextField! 
    @IBAction func clear(sender: AnyObject) { 
    textField.text = "" 
    } 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "go" { 
      let controller:ViewTwo = segue.destinationViewController as! ViewTwo 
      controller.textField = self.textField.text! as String 
     } 
    } 
} 


import Foundation 
import UIKit 

class ViewTwo:UIViewController { 
@IBOutlet weak var webView: UIWebView! 

override func viewDidAppear(animated: Bool) { 

    let url = NSURL(string: textField!) 
    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) { (data, response, error) in 
     if let urlContent = data { 
      let webContent = NSString(data: urlContent, encoding: NSUTF8StringEncoding) 
      dispatch_async(dispatch_get_main_queue(), { 
       self.webView.loadHTMLString(String(webContent!), baseURL: nil) 
      }) 
     } 
    } 

    task.resume() 

    if textField?.isEmpty == true { 
     print("nothing received") 
    } else { 
     print("\(textField)") 
    } 

} 

var textField:String? 
} 

Es scheint, als ob die Daten nicht bestehen. Ich bekomme einen fatalen Fehler, der besagt, dass NSURLSession beim Entpacken von "url" nichts gefunden hat.

+2

Postleitzahl als Code, kein Bild – Wain

+0

Haben Sie überprüft, ob die Segmentkennung in Ihrem Code mit der in Ihrem Storyboard übereinstimmt? –

+0

** 1.) ** Legen Sie den textField-Text tatsächlich in der App fest, bevor Sie ihn segmentieren, oder lassen Sie ihn einfach leer? ** 2.) ** Versuchen Sie, Ihre 'textField.isEmpty' an eine' viewDidLoad() 'Funktion zu übergeben, und behandeln Sie dort den möglichen Nullwert. ** 3.) ** Wie von @Wain angefordert, bitte posten Sie den tatsächlichen Code anstelle von Bildern. – ZGski

Antwort

3

Verwenden Sie nicht NSURL(string: "\(XXX)"), weil die Beschreibung der Zeichenfolge enthält, dass es optional ist. Verwenden Sie stattdessen einfach die Zeichenfolge NSURL(string: textField!).

+0

Danke, jetzt funktioniert es, aber aus irgendeinem Grund funktioniert es nicht für http://www.google.com, aber http://www.youtube.com funktioniert. Beliebige Ladevorgänge wurden in der Datei info.plist aktiviert ... – kevini15

+0

Sie müssen die URL debuggen, Sitzungsantwort, Zeichenfolge von Daten, Webansicht Fehler ... – Wain

+0

Es tut mir leid, aber was genau bedeutet das? Dieser Fehler ist mir noch nie passiert. Warum sollte youtube arbeiten, aber Google nicht? – kevini15

Verwandte Themen