2014-07-09 3 views
1

저는 이것이 매우 기본적인 사항이지만 뷰 컨트롤러간에 변수를 전달하고 있으며 문제가 있음을 알고 있습니다.뷰 컨트롤러간에 변수를 전달하는 문제

저는 한 뷰 컨트롤러의 텍스트 필드에서 사용자 이름을 가져 와서 다른 컨트롤러의 레이블에 표시하려고합니다.

import UIKit 

var userName = "" 

class FirstViewController: UIViewController, UIPickerViewDelegate { 

@IBAction func enterUserDetails(sender : AnyObject) { 
    userNameInput.text = userName 
} 

} 

을 그리고 다른 뷰 컨트롤러에 나는이 있습니다 : 첫 번째보기 컨트롤러에서 내가 가지고

override func viewDidLoad() { 
    super.viewDidLoad() 

userWelcomeMessage.text = "Good \(currentTimeOfDay), \(userName)!" 

} 

코드 실행을하지만 사용자 이름 변수의 출력을하지 않습니다.

도움을 주시면 감사하겠습니다. 당신이 segues를 사용하지 않는 경우 또는이 수동 SecondViewController의 인스턴스를 일부 장소와

class SecondViewController: UIViewController { 
    ... 
    var givenUserName:String! 
} 

class FirstViewController: UIViewController, UIPickerViewDelegate { 
    var userName = "" 

    @IBAction func enterUserDetails(sender : AnyObject) { 
     userName = userNameInput.text 
    } 

    override func prepareForSegue(...) { 
     if (this is your segue) { 
      (new view controller).givenUserName = userName 
     } 
    } 
} 

에 당신이 그 givenUserName를 할당 할 수

+0

명확히하기 위해 viewDidLoad는'FirstViewController'가 아닌 다른보기 컨트롤러에서 구현됩니다. 맞습니까? 'viewDidLoad'의 범위에서'userName'은 어떻게 정의되어 있습니까? 두 번째보기 컨트롤러에서 어딘가에'userName'을 할당해야합니다. –

답변

1

변경합니다. 하지만 에는 글로벌 변수가 없습니다.

+0

스토리 보드에 단편을 사용하고 있지만이 시점에서는 단편에 대해 많이 알지 못합니다. Swift는 Visual Basic 6에서 소량의 프로그래밍을 한 후 제 첫 번째 언어이므로 아직 기본 사항을 배우고 있습니다. 나는 더 많은 연구를하고 일단 그것을 더 잘 이해하면 당신의 제안을 구현하려고 노력할 것입니다. – user3746428

+0

아무런 문제가 없습니다. * 아직 *는 아니지만, ** Xcode에서 ** Master-Detail app **를 선택하면 나타나는 템플릿 코드를 살펴보십시오. –

관련 문제