【问题标题】:How to pass data from view controller to other view controller [duplicate]如何将数据从视图控制器传递到其他视图控制器[重复]
【发布时间】:2020-05-23 14:44:45
【问题描述】:

我是 swift 语言的新手,我想使用数组将价格从项目视图控制器传递到其他控制器(支付视图控制器)。谁能帮我?谢谢你

这里是项目详细视图控制器的代码

import UIKit


class ItemDetailViewController: UIViewController {

     var items = [item]()

    var name : String = ""
    var price : String = ""
    var imagee : String = ""

    @IBOutlet weak var labelname: UILabel!

    @IBOutlet weak var image: UIImageView!

    @IBOutlet weak var labelprice: UILabel!

// This one got error. 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        var DestViewController : PaymentViewController = segue.destination as! PaymentViewController

        DestViewController.price = labelprice?[IndexPath.text]

    }

    @IBAction func addtoPayment(_ sender: Any) {



        }



    override func viewDidLoad() {
        super.viewDidLoad()

        labelname.text = name
        labelprice.text = price
        image.image = UIImage(named: imagee)

    }


}

这里是付款代码

import UIKit

class PaymentViewController: UIViewController {

     var items = [item]()
    var price : String = ""

    @IBOutlet weak var paymentdetails: UILabel!


    @IBOutlet weak var cardnametextfield: UITextField!


    @IBOutlet weak var validthrutextfield: UITextField!


    @IBOutlet weak var cardnumbertextfield: UITextField!

    @IBOutlet weak var cvcnumbertextfield: UITextField!

    @IBOutlet weak var labelprice: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
    labelprice.text = price


        // Do any additional setup after loading the view.
    }


    @IBAction func paybutton(_ sender: Any) {

        if cardnametextfield.text == "" {
            alertMessage(titleInput: "Error, Payment Unsuccessful!", messageInput: "Please Fill all the fields")
        } else if validthrutextfield.text == "" {
            alertMessage(titleInput: "Error, Payment Unsuccessful!", messageInput: "Please Fill all the fields")
        } else if cardnumbertextfield.text == "" {
            alertMessage(titleInput: "Error, Payment Unsuccessful!", messageInput: "Please Fill all the fields")
        } else if cardnumbertextfield.text == "" {
        alertMessage(titleInput: "Error, Payment Unsuccessful!", messageInput: "Please Fill all the fields")
        } else {
            alertMessage(titleInput: "Success!", messageInput: "Payment Successful!")

            self.transitionToHomePage()
        }
    }

    func alertMessage(titleInput: String, messageInput: String){
        let alert = UIAlertController(title: titleInput, message: messageInput, preferredStyle: UIAlertController.Style.alert)
        let paybutton = UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil)

        alert.addAction(paybutton)
        self.present(alert, animated: true, completion: nil)
    }

    func transitionToHomePage(){
         let TabHomeViewController = storyboard?.instantiateViewController(identifier: Constrants.Storyboard.TabHomeViewController) as? UITabBarController

        view.window?.rootViewController = TabHomeViewController
        view.window?.makeKeyAndVisible()
    }

}

【问题讨论】:

  • 错误信息是什么?
  • 它显示,“UILabel”类型的值没有下标@Sweeper
  • DestViewController.price = labelprice?.text // [IndexPath.text]
  • 如果我将其更改为 labelprice?.text 它会显示可选“String”的错误值?必须解开为“String”类型的值 @jawadAli
  • 如果让 lText = labelprice?.text { DestViewController.price = lText }

标签: ios arrays swift xcode


【解决方案1】:

您可以使用此代码...尝试将第一个字母 small 用于对象

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        var destViewController : PaymentViewController = segue.destination as! PaymentViewController

        if let lText = labelprice?.text {
          destViewController.price = lText
     }

    }

【讨论】:

    【解决方案2】:

    如果你想打开: DestViewController.price = labelprice?.text ?? “”

    不推荐这种方式,但你可以使用 DestViewController.price = labelprice!.text

    在 Swift 中搜索 unwarp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多