【发布时间】:2016-04-27 14:01:26
【问题描述】:
所以我基本上是在构建一个小型浏览器。在一个 VC 上,您将链接放入 textField 并使用一个按钮来连接到找到 webView 的另一个 VC。
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?
}
似乎数据不会通过。我收到一个致命错误,说 NSURLSession 在展开“url”时什么也没找到。
【问题讨论】:
-
邮政编码作为代码,而不是图像
-
您是否检查过代码中的 segue 标识符是否与 Storyboard 中的标识符匹配?
-
1.) 您实际上是在 segueing 之前在应用程序中设置 textField 的文本,还是只是将其留空? 2.) 尝试将您的
textField.isEmpty条件移动到viewDidLoad()函数,并在那里处理潜在的 nil 值。 3.) 应@Wain 的要求,请发布实际代码而不是图片。 -
@ZGski 但我认为 viewDidLoad 函数在一开始只能工作一次?这就是我使用 viewDidAppear 的原因。我很抱歉。我已经改成代码了。我当然是在输入网址!
-
你是正确的,
viewDidLoad()只会在 ViewController 被实例化时被调用,所以你可以在viewDidAppear()中保留条件。但是,在使用它之前检查和处理 nil 传递值通常是个好主意。
标签: ios swift uitextfield nsurl