2017-02-04 4 views
0

사용자를 인증하는 담당 뷰 컨트롤러에 segue가 있습니다. 사용이 로그인되어 있으면 부모보기 컨트롤러로 돌아가고 싶습니다. this 가이드 다음에 인증보기 컨트롤러에서 출구로 나가는 segue를 만들었습니다. 코드에서 호출하려고하면 아무 일도 일어나지 않습니다.끝내려면 segue를 수행 할 수 없습니다

여기 내 코드입니다 :

import UIKit 

import Firebase 
import FirebaseAuth 
import GoogleSignIn 

class AuthVC: UIViewController, GIDSignInUIDelegate { 

    @IBAction func unwindAuth(sender: UIStoryboardSegue) { 
     print("'unwindAuth' called") 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     GIDSignIn.sharedInstance().uiDelegate = self 

     FIRAuth.auth()?.addStateDidChangeListener() { (auth, user) in 
      if FIRAuth.auth()?.currentUser != nil { 

       print(self.shouldPerformSegue(withIdentifier: "unwindSegue", sender: nil)) 

       self.performSegue(withIdentifier: "unwindAuthSegue", sender: nil) 

      } 
     } 
    } 
} 

로그인 버튼을 클릭 한 후, 나는 self.shouldPerformSegue에서 콘솔에 true를 얻을 수 있지만, 아무것도 (오류와 아무 반응이 없습니다).

저는 Xcode 버전 8.3 베타 (8W109m)를 사용하고 있습니다.

나는이 문제에 대한 해결책을 며칠 동안 찾고 있었다.

면책 조항 : Xcode를 처음 접했지만 거의 10 년 동안 프로그래밍을 해왔습니다. 나는 공식적인 훈련이 없다.

+2

당신은 매우 밀접하게 읽을하지 않았다 "..you 뷰 컨트롤러에 언 와인드 액션의 이름을 지정하면 segue가 긴장을 풀기를 원합니다. " 풀어 놓고있는 뷰 컨트롤러에 놓았습니다. – Gruntcakes

+0

답해 주셔서 감사합니다. 다른 방법으로 할 수 있습니까? 첫 번째 컨트롤러에서 로그인을 수신 할 수 있지만 인증보기 컨트롤러에서 온 것임을 알기 위해 어떤 종류의 상태 변수를 설정해야합니다. 그것은 모범 사례처럼 보이지 않습니다. 또한, 왜 아무것도 아닌 오류가 발생 했습니까? – Fallenalien22

+0

두 번째보기 컨트롤러에서 첫 번째보기 컨트롤러로 데이터를 다시 전달하려는 것 같습니다. 주위를 둘러 보면 그렇게하는 방법에 대해 많은 과거의 질문이 있습니다. – Gruntcakes

답변

3

unwind segue 액션은 떠나려는 뷰 컨트롤러가 아닌, 다시 segue하려는 뷰 컨트롤러에 배치되어야합니다.

다시 데이터를 전달하려면 다음 대리자를 사용할 수 있습니다

Passing data back from view controllers Xcode

+0

감사합니다. 이제 작동합니다. 부모 뷰 컨트롤러에'@IBAction func'을두면됩니다. segue가 그 클래스에 속하기 때문에'self.performSegue'는 자식 뷰 컨트롤러에 있어야하므로 링크가 필요조차 없습니다. – Fallenalien22

관련 문제