有没有一种方法可以从表格视图单元格中归档的文本中获取值,以在另一个表格视图单元格中使用它?

时间:2019-04-24 09:36:05

标签: ios swift uitableview cell

我正在构建一个销售鞋类产品的iOS电子商务应用程序。该问题与“结帐”屏幕有关,该屏幕是UITableViewController,用于收集用户的帐单信息并将其保存在Firebase中。

UITableViewController下面包含两个自定义的UITableView单元格。第一个单元格包含一些文本字段,可从用户那里获取帐单信息(电子邮件,卡号,有效期和CVC),而下面的第二个单元格包含一个提交按钮,可将其保存在Firebase中。

我的要求是从用户那里获取帐单信息,然后在单击“提交”按钮时将其保存在Firebase中。 (文本字段和提交按钮位于两个单独的UITableView单元格中)

您能帮我这个忙吗?请在下面找到代码段。

CheckoutViewController.swift

class CheckoutTableViewController: UITableViewController {

    // MARK: - Properties

    var shoes : [Shoe]! {
        didSet {
            tableView.reloadData()
        }
    }

    // MARK: - Structs

    struct Storyboard {
        static let billingInfoCell = "billingInfoCell"
        static let submitButtonCell = "submitButtonCell"
    }


    override func viewDidLoad() {
        super.viewDidLoad()
    }

    // MARK: - Data source

     override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 2
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        if indexPath.row == 0 {
            let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.billingInfoCell, for: indexPath) as! BillingInfoTableViewCell // Contains billing information text fields
            return cell
        } else if indexPath.row == 1 {
            let cell = tableView.dequeueReusableCell(withIdentifier: Storyboard.submitButtonCell, for: indexPath) as! SubmitButtonTableViewCell // Contains Submit button
            return cell
        } else {
            return UITableViewCell()
        }
    }

}

BillingInfoTableViewCell.swift

class BillingInfoTableViewCell: UITableViewCell {

    // MARK: - IBOutlets

    @IBOutlet weak var emailTextField: UITextField!
    @IBOutlet weak var cardNumberTextField: UITextField!
    @IBOutlet weak var expirationDataTextField: UITextField!
    @IBOutlet weak var securityNumberTextField: UITextField!


}

SubmitButtonTableViewCell.swift

class SubmitButtonTableViewCell: UITableViewCell {

    // MARK: - IBActions
    @IBAction func submitOrderButtonTapped(_ sender: UIButton) {
        print("Submit button tapped!")
    }

}

1 个答案:

答案 0 :(得分:2)

请按照以下步骤操作。

设置UITableView

的出口
@IBOutlet weak var tableView: UITableView!

设为静态UITableviewCell

lazy var cellBillingInfo = tableView.dequeueReusableCell(withIdentifier: Storyboard.billingInfoCell) as! BillingInfoTableViewCell
lazy var cellSubmit = tableView.dequeueReusableCell(withIdentifier: Storyboard.submitButtonCell) as! SubmitButtonTableViewCell

添加提交目标按钮如下。

cellSubmit.btnSumit.addTarget(self, action: #selector(submitOrderButtonTapped(_:).tou), for: .touchUpInside)

定义提交按钮方法

@objc func submitOrderButtonTapped(_ sender: UIButton) {
        print(cellBillingInfo.emailTextField.text)
        print(cellBillingInfo.cardNumberTextField.text)
        print(cellBillingInfo.expirationDataTextField.text)
        print(cellBillingInfo.securityNumberTextField.text)
}

最终密码:

class ViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!
    // MARK: - Properties

    lazy var cellBillingInfo = tableView.dequeueReusableCell(withIdentifier: Storyboard.billingInfoCell) as! BillingInfoTableViewCell
    lazy var cellSubmit = tableView.dequeueReusableCell(withIdentifier: Storyboard.submitButtonCell) as! SubmitButtonTableViewCell

    var shoes : [Shoe]! {
        didSet {
            tableView.reloadData()
        }
    }

    // MARK: - Structs

    struct Storyboard {
        static let billingInfoCell = "billingInfoCell"
        static let submitButtonCell = "submitButtonCell"
    }


    override func viewDidLoad() {
        super.viewDidLoad()
    }

    // MARK: - Data source

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 2
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        if indexPath.row == 0 {
            return cellBillingInfo
        } else if indexPath.row == 1 {
            cellSubmit.btnSumit.addTarget(self, action: #selector(submitOrderButtonTapped(_:).tou), for: .touchUpInside)
            return cellSubmit
        } else {
            return UITableViewCell()
        }
    }

    @objc func submitOrderButtonTapped(_ sender: UIButton) {
        print(cellBillingInfo.emailTextField.text)
        print(cellBillingInfo.cardNumberTextField.text)
        print(cellBillingInfo.expirationDataTextField.text)
        print(cellBillingInfo.securityNumberTextField.text)
    }
}

class SubmitButtonTableViewCell: UITableViewCell {
    @IBOutlet weak var btnSumit: UIButton!
}

如果为您工作,请标记为接受。