创建包含多个视图数据的表视图单元格

问题描述 投票:1回答:1

我目前正试图创建一个表格视图,以保存跨多个视图的数据。我的想法是,当你点击 "Create Profile "按钮时,它会创建包含所有屏幕数据的原型单元。到目前为止,我已经保存了UserDefaults,基本的表视图代码,并完成了原型单元格。我不知道如何真正去访问所有保存的数据,并在按下保存按钮时将其保存到单元格中。感谢任何帮助。这是我目前的代码。

视图流程的图片。https:/gyazo.com7632601da0c44b61075cafdcc019ba64。

第一屏为表格视图。

import UIKit

class Billing: UIViewController {

    var profiles = [String]()

    override func viewDidLoad() {
        super.viewDidLoad()


    }
    @IBAction func plusAddTaskButton(_ sender: UIBarButtonItem) {

    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
           return profiles.count
       }
       func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

           let myCell = tableView.dequeueReusableCell(withIdentifier: "profileCell", for: indexPath)
           myCell.textLabel?.text = profiles[indexPath.row]
           return myCell
       }
}
fileprivate func delegates() {
        billingTextView.delegate = self
        FirstName.delegate = self
        LastName.delegate = self
        Email.delegate = self
        Country.delegate = self
        State.delegate = self
        Address.delegate = self
        Address2.delegate = self
        City.delegate = self
        PostalCode.delegate = self
        PhoneNumber.delegate = self
    }

送货详情页面。

  import Foundation
import UIKit

var billingText: String!
var firstName: String!
var lastName: String!
var email: String!
var phoneNumber: String!
var address: String!
var address2: String!
var city: String!
var postalCode: String!
var country: String!
var state: String!

class AddBilling: UIViewController,UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource {

    @IBOutlet weak var billingTextView: UITextField!
    @IBOutlet weak var FirstName: UITextField!
    @IBOutlet weak var LastName: UITextField!
    @IBOutlet weak var Email: UITextField!
    @IBOutlet weak var PhoneNumber: UITextField!
    @IBOutlet weak var Address: UITextField!
    @IBOutlet weak var Address2: UITextField!
    @IBOutlet weak var City: UITextField!
    @IBOutlet weak var PostalCode: UITextField!
    @IBOutlet weak var Country: UITextField!
    @IBOutlet weak var State: UITextField!
    @IBOutlet weak var proceedButton: UIButton!
    @IBOutlet weak var proceedToSecondBillingButton: UIButton!
    @IBOutlet weak var secondBillingSwitch: UISwitch!



    let defaults = UserDefaults.standard

    override func viewDidLoad() {
        super.viewDidLoad()


        delegates()



        billingTextView.text = defaults.string(forKey: "profileName")
        FirstName.text = defaults.string(forKey: "firstName")
        LastName.text = defaults.string(forKey: "lastName")
        Email.text = defaults.string(forKey: "email")
        PhoneNumber.text = defaults.string(forKey: "phoneNumber")
        Address.text = defaults.string(forKey: "address")
        Address2.text = defaults.string(forKey: "address2")
        City.text = defaults.string(forKey: "city")
        PostalCode.text = defaults.string(forKey: "postalCode")
        Country.text = defaults.string(forKey: "country")
        State.text = defaults.string(forKey: "state")

    }
    fileprivate func secondBillingSwitchState() {
        if (defaults.object(forKey: "secondBillingSwitch") != nil) {
            secondBillingSwitch.isOn = defaults.bool(forKey: "secondBillingSwitch")
        }
    }
    @IBAction func secondBillingSwitch(_ sender: UISwitch) {

        if secondBillingSwitch.isOn {
            defaults.set(true, forKey: "secondBillingSwitch")
        } else {
            defaults.set(false, forKey: "secondBillingSwitch")
        }
    }

    @IBAction func clear(_ sender: UIBarButtonItem) {

        UserDefaults.standard.set("", forKey: "profileName")
        UserDefaults.standard.set("", forKey: "firstName")
        UserDefaults.standard.set("", forKey: "lastName")
        UserDefaults.standard.set("", forKey: "email")
        UserDefaults.standard.set("", forKey: "phoneNumber")
        UserDefaults.standard.set("", forKey: "address")
        UserDefaults.standard.set("", forKey: "address2")
        UserDefaults.standard.set("", forKey: "city")
        UserDefaults.standard.set("", forKey: "postalCode")
        UserDefaults.standard.set("", forKey: "country")
        UserDefaults.standard.set("", forKey: "state")

        billingTextView.text = ""
        FirstName.text = ""
        LastName.text = ""
        Email.text = ""
        PhoneNumber.text = ""
        Address.text = ""
        Address2.text = ""
        City.text = ""
        PostalCode.text = ""
        Country.text = ""
        State.text = ""

    }

    @IBAction func proceedToPaymentSave(_ sender: UIButton) {

        billingText = billingTextView.text!
        firstName = FirstName.text!
        lastName = LastName.text!
        email = Email.text!
        phoneNumber = PhoneNumber.text!
        address = Address.text!
        address2 = Address2.text!
        city = City.text!
        postalCode = PostalCode.text!
        country = Country.text!
        state = State.text!

        defaults.set(billingText, forKey: "profileName")
        defaults.set(firstName, forKey: "firstName")
        defaults.set(lastName, forKey: "lastName")
        defaults.set(email, forKey: "email")
        defaults.set(phoneNumber, forKey: "phoneNumber")
        defaults.set(address, forKey: "address")
        defaults.set(address2, forKey: "address2")
        defaults.set(city, forKey: "city")
        defaults.set(postalCode, forKey: "postalCode")
        defaults.set(country, forKey: "country")
        defaults.set(state, forKey: "state")


    }

    fileprivate func delegates() {
        billingTextView.delegate = self
        FirstName.delegate = self
        LastName.delegate = self
        Email.delegate = self
        Country.delegate = self
        State.delegate = self
        Address.delegate = self
        Address2.delegate = self
        City.delegate = self
        PostalCode.delegate = self
        PhoneNumber.delegate = self
    }


}

账单详情屏幕

import UIKit
import Foundation

var firstNameBilling: String!
var lastNameBilling: String!
var addressBilling: String!
var address2Billing: String!
var cityBilling: String!
var postalCodeBilling: String!
var countryBilling: String!
var stateBilling: String!

class AddBilling2: UIViewController,UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDataSource {

    @IBOutlet weak var FirstNameBilling: UITextField!
    @IBOutlet weak var LastNameBilling: UITextField!
    @IBOutlet weak var AddressBilling: UITextField!
    @IBOutlet weak var AddressBilling2: UITextField!
    @IBOutlet weak var CityBilling: UITextField!
    @IBOutlet weak var CountryBilling: UITextField!
    @IBOutlet weak var StateBilling: UITextField!
    @IBOutlet weak var PostalCodeBilling: UITextField!
    @IBOutlet weak var proceedButton: UIButton!


    let defaults = UserDefaults.standard


    override func viewDidLoad() {
        super.viewDidLoad()


        delegates()

        FirstNameBilling.text = defaults.string(forKey: "firstNameBilling")
        LastNameBilling.text = defaults.string(forKey: "lastNameBilling")
        AddressBilling.text = defaults.string(forKey: "addressBilling")
        AddressBilling2.text = defaults.string(forKey: "address2Billing")
        CityBilling.text = defaults.string(forKey: "cityBilling")
        PostalCodeBilling.text = defaults.string(forKey: "postalCodeBilling")
        CountryBilling.text = defaults.string(forKey: "countryBilling")
        StateBilling.text = defaults.string(forKey: "stateBilling")
    }
    @IBAction func proceedToPayment(_ sender: UIButton) {

        firstNameBilling = FirstNameBilling.text!
        lastNameBilling = LastNameBilling.text!
        addressBilling = AddressBilling.text!
        address2Billing = AddressBilling2.text!
        cityBilling = CityBilling.text!
        postalCodeBilling = PostalCodeBilling.text!
        countryBilling = CountryBilling.text!
        stateBilling = StateBilling.text!


        defaults.set(firstNameBilling, forKey: "firstNameBilling")
        defaults.set(lastNameBilling, forKey: "lastNameBilling")
        defaults.set(addressBilling, forKey: "addressBilling")
        defaults.set(address2Billing, forKey: "address2Billing")
        defaults.set(cityBilling, forKey: "cityBilling")
        defaults.set(postalCodeBilling, forKey: "postalCodeBilling")
        defaults.set(countryBilling, forKey: "countryBilling")
        defaults.set(stateBilling, forKey: "stateBilling")
    }
    @IBAction func clear(_ sender: UIBarButtonItem) {

        UserDefaults.standard.set("", forKey: "firstNameBilling")
        UserDefaults.standard.set("", forKey: "lastNameBilling")
        UserDefaults.standard.set("", forKey: "addressBilling")
        UserDefaults.standard.set("", forKey: "address2Billing")
        UserDefaults.standard.set("", forKey: "cityBilling")
        UserDefaults.standard.set("", forKey: "postalCodeBilling")
        UserDefaults.standard.set("", forKey: "countryBilling")
        UserDefaults.standard.set("", forKey: "stateBilling")

        FirstNameBilling.text = ""
        LastNameBilling.text = ""
        AddressBilling.text = ""
        AddressBilling2.text = ""
        CityBilling.text = ""
        PostalCodeBilling.text = ""
        CountryBilling.text = ""
        StateBilling.text = ""
    }
    fileprivate func delegates() {
        FirstNameBilling.delegate = self
        LastNameBilling.delegate = self
        CountryBilling.delegate = self
        StateBilling.delegate = self
        AddressBilling.delegate = self
        AddressBilling2.delegate = self
        CityBilling.delegate = self
        PostalCodeBilling.delegate = self
    }

}

付款详情屏幕。

import UIKit

var cardHolder: String!
var cardNumber: String!
var expirationDate: String!
var cvc: String!

class AddCreditCard: UIViewController,UITextFieldDelegate {

    @IBOutlet weak var CardName: UITextField!
    @IBOutlet weak var CardNumber: UITextField!
    @IBOutlet weak var CardExpirationDate: UITextField!
    @IBOutlet weak var CardCVC: UITextField!
    @IBOutlet weak var createProfileButton: UIButton!

    let defaults = UserDefaults.standard


    override func viewDidLoad() {
        super.viewDidLoad()


        delegate()

        CardName.text = defaults.string(forKey: "cardHolder")
        CardNumber.text = defaults.string(forKey: "cardNumber")
        CardExpirationDate.text = defaults.string(forKey: "expirationDate")
        CardCVC.text = defaults.string(forKey: "cvc")
    }
    @IBAction func clear(_ sender: UIBarButtonItem) {

        UserDefaults.standard.set("", forKey: "cardHolder")
        UserDefaults.standard.set("", forKey: "cardNumber")
        UserDefaults.standard.set("", forKey: "expirationDate")
        UserDefaults.standard.set("", forKey: "cvc")

        CardName.text = ""
        CardNumber.text = ""
        CardExpirationDate.text = ""
        CardCVC.text = ""
    }

    @IBAction func createProfileButton(_ sender: UIButton) {

        cardHolder = CardName.text!
        cardNumber = CardNumber.text!
        expirationDate = CardExpirationDate.text!
        cvc = CardCVC.text!

        defaults.set(cardHolder, forKey: "cardHolder")
        defaults.set(CardNumber, forKey: "cardNumber")
        defaults.set(expirationDate, forKey: "expirationDate")
        defaults.set(cvc, forKey: "cvc")


    }

    fileprivate func delegate() {
        CardName.delegate = self
        CardExpirationDate.delegate = self
    } 
}

ios swift nsuserdefaults userdefaults
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.