OK, ich bin neu und arbeite langsam durch einen Entwicklungskurs. Aber mir ist klar, wenn ich das hier knacken könnte, wäre ich weit voraus.Übergeben Sie einen Variablenwert von einer IBAction an ein IBOutlet
Ich mache einen Postaufruf zu einer PHP-Datei auf meinem Server und gebe die JSON-Daten zurück. Das funktioniert. und ich kann drucken Sie die Variable
print("firstNameValue: \(firstNameValue)")
ich jetzt ausgegeben werden soll, den Wert einer Variablen ... firstNameValue in ein Textfeld namens Textfield.
Ich bin neu in Swift und ich denke "globale Variable?". Dies hat funktioniert, aber ich möchte auf die Antwort vom HTTP-Aufruf warten, um das Textfeld zu vervollständigen und dann zu aktualisieren.
Ich hoffe, Sie können helfen. Ich bin sehr neu in OOP und mein Kopf platzt.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var feel: UITextField!
@IBAction func anxious(sender: AnyObject) {
let myUrl = NSURL(string: "http://mywebsite.com/Jamesbond.php");
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "POST";// Compose a query string
let postString = "firstName=James&lastName=Bond";
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil
{
print("error=\(error)")
return
}
// You can print out response object
print("response = \(response)")
// Print out response body
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(responseString)")
//Let's convert response sent from a server side script to a NSDictionary object:
do {
let myJSON = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
if let parseJSON = myJSON {
// Now we can access value of First Name by its key
let firstNameValue = parseJSON["firstName"] as? String
print("firstNameValue: \(firstNameValue)")
EDIT::the below two lines solved it.
dispatch_async(dispatch_get_main_queue()) {
self.textField.text = firstNameValue}
}
} catch {
print(error)
}
}
task.resume()
}
@IBOutlet weak var textField: UITextField!
@IBAction func submit(sender: AnyObject) {
print("hello")
let a = 9
let b = 10
let c = (a*b)
textField.text="You are a banana \(c)"
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
Ersetzen Sie einfach die * Ich möchte diesen Wert ... * Kommentar mit dem Code, um das Textfeld zu aktualisieren und Sie sind fertig. – vadian
Vielen Dank, dass das nicht funktioniert, das ist das erste, was ich ausprobiert habe. textField.text = "name = \ (firstNameValue!)" das kommt mit einem fehler zurück – uberphoebe
Es sagt, dass ich mich gezwungen habe, mich selbst zu setzen. vor wie self.textField.text, aber wenn ich dies tue, erzeugt es keinen Kompilierungsfehler, aber kein Wert wird in das Feld eingefügt. – uberphoebe