ОК, я новичок в этом и медленно работаю по курсу разработки. Но я понимаю, могу ли я сломать это, я буду длинным путем вперед.Передайте переменное значение из IBAction в IBOutlet
Я делаю почтовый вызов файла PHP на моем сервере и возвращаю данные JSON. Это работает. и я могу напечатать переменную
print("firstNameValue: \(firstNameValue)")
теперь я хочу, чтобы вывести значение одной переменной ... firstNameValue в текстовое поле под названием TextField.
Я новичок в Swift и думаю «глобальная переменная?». Это сработало, но я хочу дождаться ответа от HTTP-вызова, чтобы завершить, а затем обновить текстовое поле.
Надеюсь, вы сможете помочь. Я очень новичок в ООП, и моя голова разрывается.
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.
}
Просто замените * Я ХОЧУ НАДАТЬ ЭТУ ЗНАЧЕНИЕ ... * прокомментируйте код, чтобы обновить текстовое поле, и все готово. – vadian
Спасибо, что не работает, это первое, что я пробовал. textField.text = "name = \ (firstNameValue!)" это возвращается с ошибкой – uberphoebe
В нем говорится, что я не хочу садиться. впереди, как self.textField.text, но когда я это делаю, он не генерирует ошибку компиляции, но значение не вводится в поле. – uberphoebe