저는 이것이 매우 기본적인 사항이지만 뷰 컨트롤러간에 변수를 전달하고 있으며 문제가 있음을 알고 있습니다.뷰 컨트롤러간에 변수를 전달하는 문제
저는 한 뷰 컨트롤러의 텍스트 필드에서 사용자 이름을 가져 와서 다른 컨트롤러의 레이블에 표시하려고합니다.
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
를 할당 할 수
명확히하기 위해 viewDidLoad는'FirstViewController'가 아닌 다른보기 컨트롤러에서 구현됩니다. 맞습니까? 'viewDidLoad'의 범위에서'userName'은 어떻게 정의되어 있습니까? 두 번째보기 컨트롤러에서 어딘가에'userName'을 할당해야합니다. –