как добавить элемент в табличное представление со значением int - PullRequest
0 голосов
/ 11 июня 2018

Как добавить цифры в ячейку таблицы и добавить цифры к общей метке?wКогда я добавляю элемент типа ps2 Как я могу также добавить цену в ячейку таблицы и добавить ее в общую метку?Это проблема, которую я пытался решить в течение 3 недель.

Моя таблица до сих пор:

my table

My ViewController.swiftкод:

import UIKit

class ViewController: UIViewController, UITableViewDataSource {

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! //1.

        let text = data[indexPath.row] //2.

        cell.textLabel?.text = text //3.

        return cell //4.
    }


    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.dataSource = self
    }

    @IBOutlet weak var totalLabel: UILabel!

    var data = ["pizza"]
    var total = 0


    @IBAction func addButton(_ sender: Any) {

        let alert = UIAlertController(title: "New Name", message: "Add a new name", preferredStyle: .alert)

        let saveAction = UIAlertAction(title: "Spice", style: .default) { [unowned self] action in
            guard let textField = alert.textFields?.first, let nameToSave = textField.text else { return }

            self.total += 2000
            self.totalLabel.text = "Total Bill is: $\(self.total)"

            self.data.append(nameToSave)
            self.tableView.reloadData()                       
        }

        let cancelAction = UIAlertAction(title: "Cancel", style: .default)


        alert.addTextField()

        alert.addAction(saveAction)
        alert.addAction(cancelAction)

        present(alert, animated: true)
    }

}

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Вы хотите начать с хранения цен в виде целых, один из вариантов - сохранить их в массиве.Имейте в виду, что если вы собираетесь использовать десятичные дроби, вам нужно будет использовать другой тип.

Затем вы можете сложить массив целых чисел с чем-то вроде этих строк ...

let prices = [...]
totalPrice = prices.reduce(0, +)

Дополнительная информация:

При этом используется метод сокращения массива (документация здесь ), который позволяет вам «сократить коллекцию элементов до одного значения путем рекурсивного применения предоставленного замыкания».Мы даем ему 0 в качестве начального значения, а затем, по сути, замыкание {$ 0 + $ 1}.Конечно, мы можем упростить это до единого знака плюс, потому что так работает Swift.

Затем можно присвоить значение totalPrice метке ячейки таблицы sum.

0 голосов
/ 11 июня 2018

Простое решение:

  • Создайте подходящую модель данных, например

    struct Model {
        let name : String
        let price : Double
    }
    
  • В контроллере создайте data

    var data = [Model]()
    
  • В viewDidLoad заполните массив источника данных, например,

    override func viewDidLoad() {
       super.viewDidLoad()
    
       data = [Model(name: "Pizza", price: 4.99), Model(name: "Burger", price: 2.99)]
       tableView.dataSource = self
    }
    
  • При каждой перезагрузке табличного представления суммируйте цены

    totalLabel.text = String(data.map{$0.price}.reduce(0.0, +))
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...