2017-01-25 12 views
0

특정 사용자에 대해 앱에서 필요한 모든 정보를 보유하고있는 사용자 정의 "사용자"클래스를 사용하여 로그인 논리를 포함하는 iOS 앱을 만들려고합니다. 내 애플 리케이션은 또한 메인 인터페이스에 대한 탭 막대 컨트롤러가 있습니다. 그러나 로그인 화면의 "사용자"를 탭 표시 줄 컨트롤러로 전달한 다음 해당 하위보기 컨트롤러로 전달하는 가장 좋은 방법을 찾는 데 어려움을 겪고 있습니다. 각 탭마다 내비게이션 컨트롤러가 필요합니다. 다음과 같이 나의 현재 논리는 다음과 같습니다스위프트 3 : TabBarController에서 Child View 컨트롤러로 데이터 전달하기

LoginViewController.swift :

class LoginViewController: UIViewController { 

    ... 

    func displayRideFinishedSurvey(loggedInUser: User) -> Void { //user provided valid credentials, time to login 
     let sb = UIStoryboard(name: "SuccessfulLogin", bundle: Bundle.main) 
     let cc = (sb.instantiateViewController(withIdentifier: "tabBarStoryboard")) as! MyTabBarController 
     cc.loggedInUser = loggedInUser // will be configured here for the entire app 
     present(cc, animated: true, completion: nil) 
    } 
} 

MyTabBarController.swift :

import UIKit 

class MyTabBarController: UITabBarController { 

    var loggedInUser: User? 

    override func viewDidLoad() { 
     ... 
    } 
} 

MyAccountViewController.swift :

import UIKit 

class MyAccountViewController: UIViewController { 

    var loggedInUser: User? 

    override func viewDidLoad() { 
     ... 
    } 
} 
설정하는 가장 좋은 방법이 될 것입니다 무엇 제공된 정보와

enter image description here

(여러 개의 탭, 그냥 예를 들어 있습니다) :

스크린 샷은 스토리 보드의 설정을 나타 내기 위해 아래에 볼 수있다 MyAccountViewController 내의 "loggedInUser"변수?

답변

0

몇 가지 옵션 :
1. 데이터를 저장소에 저장하려면 NSUserDefault를 사용하십시오.
2. 싱글 톤을 생성하십시오.
3. 글로벌 변수
원하는 것을 선택할 수 있습니다.

+0

위 옵션 중 가장 전문적이고 효율적인 것은 무엇이라고 생각하십니까? –

+0

@ JustinFrazer 가장 쉬운 방법은 child view 컨트롤러 클래스에서 public var를 만드는 것입니다. 자식보기 컨트롤러를 표시하기 전에 그에 따라 var를 설정하십시오. – jokeman