2017-07-13 9 views
0

私は、テキストフィールドとボタンを持つViewControllerを持っています。ユーザは、テキストフィールドに自分の名前を入力し、完了ボタンを押す。彼がボタンを押すと、別のView ControllerであるGifteeDetailsに縫い込まれます。彼の名前を表示するはずのラベルがそのviewControllerにあります。しかし、彼の名前は表示されません。私はエラーを受け取りません。ViewController間でTextFieldデータを転送

ここでのViewControllerです:すべてについては申し訳ありません

var nametext = String() 
var agetext = String() 
var locationstext = String() 
var intereststext = String() 

@IBOutlet weak var labelGifteeName: UILabel! 
@IBOutlet weak var labelGifteeAge: UILabel! 
@IBOutlet weak var labelGifteeLocations: UILabel! 
@IBOutlet weak var labelGifteeInterests: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    nametext = labelGifteeName.text! 
    agetext = labelGifteeAge.text! 
    locationstext = labelGifteeLocations.text! 
    intereststext = labelGifteeInterests.text! 
} 

@IBOutlet weak var textGifteeName: UITextField! 
@IBAction func toDetails(_ sender: Any) { 
    performSegue(withIdentifier: "toDetails", sender: nil) 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let destDetails: GifteeDetails = segue.destination as! GifteeDetails 
    destDetails.nametext = textGifteeName.text! 
    destDetails.agetext = "\(Int(age)! - 2000 + 17)" 
    destDetails.locationstext = labelGifteeLocationsPreview.text! 
    destDetails.intereststext = labelGifteeInterestsPreview.text! 
} 

はここGifteeDetailsです!。私がそれらを持っていない限り、Swiftは私に誤りを与える。

+0

問題はあなたということです反対の方法でそれをやっている。 GifteeDetailsのviewDidLoadメソッド内でテキストフィールドのプロパティを設定するには、 'nametext = labelGifteeName.text!'を 'labelGifteeName.text = nametext'に変更し、' agetext = labelGifteeAge.text! 'を' labelGifteeAge.text = agetext'に変更します。 –

答えて

0

ラベルに接続されていない文字列nametextなどを更新しています。で

destDetails.nametext = textGifteeName.text! 
destDetails.agetext = "\(Int(age)! - 2000 + 17)" 
destDetails.locationstext = labelGifteeLocationsPreview.text! 
destDetails.intereststext = labelGifteeInterestsPreview.text! 

:あなたは、コードのこの部分を交換する必要が

destDetails.labelGifteeName.text = textGifteeName.text! 
destDetails.labelGifteeAge.text = "\(Int(age)! - 2000 + 17)" 
destDetails.labelGifteeLocations.text = labelGifteeLocationsPreview.text! 
destDetails. labelGifteeInterests.text = labelGifteeInterestsPreview.text! 

nametextStringオブジェクトであり、あなたがしたいラベルのStringあるlabelGifteeName.text異なっています更新する。

+0

ありがとうございました!それはうまくいった。 – Sarah

+0

あなたは大歓迎です! –

0

segueを使用する場合は、それを削除してから、FirstviewControllerでそのボタンのアクションメソッドを作成し、pushviewControllerを使用してSecondviewControllerを移動します。

スウィフト3 例:SecondViewで

@IBAction func toDetails(_ sender: Any) 
{ 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let vc = storyboard.instantiateViewController(withIdentifier: "SecondView") as! SecondView 

    UserDefaults.standard.set(self. textGifteeName.text, forKey: "savedStringKey") 
    UserDefaults.standard.synchronize() 
    self.navigationController?.pushViewController(vc, 
              animated: true) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.labelGifteeName.text = UserDefaults.standard.string(forKey: "savedStringKey")! 
} 
0

labelGifteeName.textでGifteeDetailsVCであなたのfuncのviewDidLoad()メソッドを更新してください! = nametextlabelGifteeAge.text!=あなたはすでに文字列にしてのViewControllerで、すなわち、nametextとagetextを値が割り当てられているので、代わりにあなたのコードの agetext、あなたがラベルに文字列値を表示する必要が

関連する問題