2011-02-15 5 views
2

그래서 나는 앱이로드 될 때 앱 위임에로드하는 두 개의보기 컨트롤러가 있습니다. 하나는 사용자 이름과 암호가 있고 다른 하나는 UITabBarViewController 인 로그인 페이지입니다. 사용자가 로그인 한 후에는 로그인보기를 제거하기 만하면 UITabBarViewController가 표시됩니다. 문제는 내 UITabBarViewController에서 사용자 이름과 암호가 ViewController에서 필요합니다. 이 문제를 어떻게 해결할 수 있습니까?ViewController 데이터 공유

추가 정보 : 로그온 버튼을 클릭에 사용자 ID, 암호 및 로그온 버튼

  • :

    • 응용 프로그램 페이지에 로그온 시작 : 여기

      는 내가하고 싶은 것을 기본적입니다 자격 증명을 확인한 후 사용자에게 다음 화면으로 이동합니다.

    • 상단에 탐색 모음 (기본적으로 UINavigationController)

    바닥

  • 에서 6,
  • 테이블보기
  • 탭 바 지금에 로그인 한 후, 나는 UITabBarViewController의 모든 ViewControllers는 사용자가 처음 로그인 화면에 입력하는 사용자 이름과 암호를 얻을 수 있어야합니다.

  • 답변

    4

    나는 최고의 디자인은 로그인에 모달 뷰 컨트롤러를 제시 탭 막대의 컨트롤러를 가지고 생각합니다. 컨트롤러 탭 막대는 LoginViewController의 위임자가되며 LoginViewController는 로그인이 완료되면 대리자에게 알립니다. 로그인이 성공적으로 완료되면 탭 막대의 컨트롤러가 LoginViewController를 닫을 수 있습니다.

    이제 답을 업데이트 한 후에이 코드를 작성했습니다. UINavigation 바 및 테이블 뷰를 추가하는 방법을 알아낼 수 있습니다. 질문은 뷰 컨트롤러간에 데이터를 전달하는 것에 대한 것입니다.완전한 앱을 위해 많은 뷰와 컨트롤러를 함께 사용하는 방법에 대해 자세히 알고 싶다면 스탠포드의 iTunes U 코스에 iOS 프로그래밍을 적극 권장합니다.

    나는 LoginViewController와 UIViewController 사이에서 데이터를 공유하기위한 델리게이트의 적절한 사용을 보여주는 완전하고 완전한 예제를 제공합니다 (UIViewController는 탭 막대 컨트롤러로 대체 될 것입니다). 또한 NSUserDefaults를 사용하여 다른 곳에서 액세스 할 수있는이 데이터를 저장하는 방법을 설명합니다.

    예제 코드는 here입니다.

    +0

    더 자세히 설명해 주시겠습니까? 나는 당신이 대의원을 만들어서 의미하는 바를 얻지 못했습니까? 새 프로젝트가있을 때 생성되는 원래 대리자를 사용 하시겠습니까? – aherlambang

    +0

    지금 코드를 작성 중입니다 ... – Evan

    +0

    좋아, 해결책이있어 .. 로그인을 위해 모달보기를 사용하고 있습니까? – aherlambang

    0

    1 루트 컨트롤러를 사용하여 데이터를 공유하십시오.

    루트 컨트롤러에 데이터를 넣을 수 있으며 루트 컨트롤러는 두 개의보기를 만듭니다.

    루트 컨트롤러는 데이터를 하위보기로 전송할 수 있습니다.

    2 클래스 생성자를 사용하십시오.

    보기를 만들 때 데이터와 함께 매개 변수를 지정할 수 있습니다.

    +0

    루트 컨트롤러는 어디에 있습니까? – aherlambang

    +0

    루트를 통해 appDelegate를 의미한다고 생각합니다. 이와 같은 글로벌 데이터 공유가 좋은 디자인이 아니기 때문에 어느 것이 나쁘다. 그것은 당신의 viewcontrollers에서 응용 프로그램 대리인에 대한 의존성을 추가합니다. 따라서 다른 프로그램에서 재사용하기가 매우 어렵습니다. – Evan

    0

    큰 문제는 아닙니다.

    appDelegate 클래스에서 NSString 변수를 두 개 만들고 속성을 설정할 수 있습니다. 따라서 전체 프로젝트에서 해당 변수에 액세스 할 수 있습니다.

    로그인 페이지에서 값을 설정하면 tabBarController에있는 값에 액세스하게됩니다.

    그게 전부입니다.

    Reagards,

    사티

    +0

    그런 글로벌 데이터를 공유하는 것은 좋지 않습니다. 그것은 당신의 viewcontrollers에서 응용 프로그램 대리인에 대한 의존성을 추가합니다. 따라서 다른 프로그램에서 재사용하기가 매우 어렵습니다. – Evan