2016-06-16 2 views
0

var message:String=""global variable으로 설정했습니다. 그 값을 다른 ViewController에서 prepareForSegue까지 보내야 만합니다. 그러나 nil 값을 보내고 있습니다. 어떤 방법으로 최신 값을 segue로 보낼 수 있습니까? ? 감사 전역 변수 : var message2="bob"Segue는 계산하기 전에 nil 값을 보냅니 까?

SEGUE 방법을 준비 :

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
    if (segue.identifier == "submitSegue") { 
     let svc = segue.destinationViewController as! Otpscreen; 
     svc.otpname = username.text! 
     svc.otppass = password.text! 
     svc.otp=message2 
    } 
} 
내가 값을 계산하고있어

다른 방법 : 코드의 잘못된

func findMatch()->Void 
{ 
print(username.text!+password.text!) 
let authenticate=username.text!+password.text! 
//line where i calculated hash 
print(hash) 
let num=strtoul(hash,nil,16) 
print(num) 
let finalhash=String(num) 
let soap = SOAPEngine() 

soap.responseHeader = true; 
soap.setValue(username.text!, forKey: "userName") 
soap.setValue(password.text!, forKey: "password") 
soap.setValue(finalhash, forKey: "hashKey") 
let dict:Dictionary = try! soap.syncRequestURL("someUrl", soapAction: "send method ") as Dictionary 
NSLog("%@", dict); 
let returnmessage=(dict["Body"]!["sendOTPResponse"]!!["sendOTPReturn"]!!["string"]!![1]) 
print(returnmessage) 
message2=returnmessage as! String 


} 
+3

일부 코드보기 –

+0

스토리 보드의 코드와 화면을 보여주십시오. –

+0

먼저 글로벌 변수를 사용하면 안됩니다. 두 번째 당신은'viewDidLoad'에서 값에 접근하려고합니까? 셋째,'prepareForSegue'에 대한 코드와 대상보기 컨트롤러에서 메시지에 액세스하는 위치 – Paulw11

답변

0

아무것도,하지만 문제는 완료입니다 SOAPEngine 응답을 완료 한 후, segue 메소드는 응답 후에 호출해야한다. 그래서 // 프로그램 })하여 SEGUE를 호출 다음 코드를

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    <#code to be executed after a specified delay#> 

를 사용;

+0

고마워요. 그래도 식별자로 segue를 사용하고 있습니다! 내가 원하는대로 일했다. – SwapCoder

관련 문제