2017-05-19 11 views
0

보기간에 데이터를 사용하고 싶지만 탭 표시 줄보기 컨트롤이 있습니다. 실제로 내 초기보기 로그인보기 나는 "access_token"찌르다 및 성공적으로 탭 탭 컨트롤의 첫 번째보기를 통과 할 수 있지만 두 번째 탭 막대보기에서 webservice에서 다른 데이터를 얻기 위해 액세스 토큰 문자열을 사용하려는 경우 얻을. 어떻게하면 탭 막대 컨트롤러의 두 번째보기에서 액세스 토큰 문자열을 얻을 수 있습니까? 탭 표시 줄 뷰 컨트롤러에서보기 컨트롤간에 공유 데이터를 사용하는 방법

self.strSuccessful = json["acces_token"] as? String 

내 두 번째보기

class SalesVC: UIViewController { 
    var strAccesToken: String! 
    } 

내 초기 (첫 번째보기 컨트롤러가 아닌 inculude TabBar의 때문에 로그인 화면)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    let salesViewController = segue.destination as! SalesVC 

    salesViewController.strAccessToken = strSuccessfulAccesToken 


} 
+0

관련 : http://stackoverflow.com/a/27619420/1630618 탭 표시 줄에 값을 설정하고자하는 각 뷰 컨트롤러에서

vacawama

답변

0

가장 간단한 해결책은 당신이 UserDefaults를 사용할 수있다 액세스 토큰을 LoginController에 저장 한 후 SecondTabController에서 사용자 기본값에서 액세스 토큰을 검색하십시오. 이제 UserDefaults

UserDefaults.standard.set(strSuccessfulAccesToken, forKey: "AccessToken") 

에서

저장 액세스 토큰 SecondTabController에서 사용자 기본 설정에서 액세스 토큰을 검색 할 수 있습니다.

if let accessToken = UserDefaults.standard.string(forKey: "AccessToken") { 
    print(accessToken) 
} 

수동 LoginController에서 액세스 토큰을 통과하려면

는이 방법으로 같은 LoginControllerprepareForSegue에 액세스 토큰을 설정합니다. 일반적인 경우에

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let tabbar = segue.destination as! UITabBarController 
    if let salesVC = tabbar.viewControllers[1] as? SalesVC { 
     salesVC.strAccessToken = strSuccessfulAccesToken 
    } 
} 
0

(예를 들어, UI 환경과 같은) 간단한 데이터를 저장하는 UserDefaults를 사용할 수 있지만, 당신이 언급 한 액세스 토큰, 당신은 사용자의 계정을 보호하려는 경우, 당신은 조심해야하고 Keychain과 같은 보안 저장소를 선택하십시오.

기억하십시오. UserDefaults은 단순한 XML 파일이며 장치에 액세스 할 수있는 사람이면 누구나 읽을 수 있습니다.

This 보안의 iOS 사용자 데이터

0

난 당신 탭 표시 줄 컨트롤러 내에서 다른보기 컨트롤러 사이에 데이터를 전송하는 방법을 묻는 생각에 대한 좋은 튜토리얼입니다.

class ItemTabBarController: UITabBarController { 
    var allTags: [TagData] = [] 

    override func viewDidLoad() { 
     print("ItemTabBarController.viewDidLoad") 
    } 
} 

스토리 보드의 탭 표시 줄의 사용자 정의 클래스 속성이 "ItemTabBarController"입니다 있는지 확인하십시오

은 데이터를 보유 할 탭 표시 줄 클래스와 변수를 정의 : 이것은 내가 그것을 한 적이 어떻게

func configureItemTabBarController() { 
     let itemTabBarController = self.tabBarController as! ItemTabBarController 
     self.viewModel.allTags = viewModel.configureAllTags() 
     itemTabBarController.allTags = self.viewModel.allTags 
    }