2015년 12월 19일 토요일

iOS/swift - segue 연결 후 중간에 가로채기 하고자 할때 : shouldPerformSegueWithIdentifier

segue로 storyboard를 연결해 놓고 특정 조건일 때 해당 segue로 연결을 막고 싶은 경우가 있다.

가령 특정 메뉴를 들어가고자 할땐 로그인이 되있지 않다면 로그인 화면으로 유도하려면 segue를 중간에 가로채야 한다.


UIViewController 안에서 shouldPerformSegueWithIdentifier 를 사용하여 구현할 수 있다.

NeedLoginSegue 로 이동할 경우 사용자 정보( checkUserInformation(userDefaults) )가 false면 LoginSegue 를 열게 하는 코드는 다음과 같다.

    override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {
        if identifier == "NeedLoginSegue" {
            if checkUserInformation(userDefaults)==false {
                self.performSegueWithIdentifier("LoginSegue", sender: nil)
            }
            return false
        }
        return true
    }

unwind와 함께 빈번하게 쓰는 패턴이니 기억해두자.