Прежде всего, я прошу прощения, если мой заголовок вводит в заблуждение по сравнению с моим вопросом; Я не был уверен, как это выразить. Надеюсь, мои фотографии дают больше объяснений, чем я. Я все еще на начальных этапах разработки под iOS и, похоже, столкнулся с первой проблемой. По сути, я создаю приложение, в котором человек может вводить товар, который он купил, а затем продал, и он может отслеживать свои прибыли / убытки.
По сути, пользователь может добавить элемент, подобный изображенному ниже, и затем он продолжит заполнять табличное представление заголовком элемента, сколько он получил или потерял в результате этой транзакции, а также другую информацию об этом элементе
Рис 1
Во-вторых, у меня есть функция, с помощью которой пользователь может удалить элемент из ячейки, проведя пальцем влево. Моя первая проблема заключается в том, что метки количества (т.е. 3) и общей суммы («169,82 $») не обновляются сразу после удаления ячейки. Моя вторая проблема - сам ярлык общей суммы; Я могу обновить метку количества, просто получив счетчик массива, в котором хранятся объекты предметов, но я не могу сделать это с меткой общего количества
Рис 2
Рис. 3
Вот фрагмент моего кода
import UIKit
var ClothesList = [String]()
var ClothesResults = [String]()
var ClothesTotalQty = AccessoryList.count
var ClothesBuy = [String]()
var ClothesSell = [String]()
var ClothesFeeArray = [String]()
var ClothesSize = [String]()
var ClothesTotalAmount = 0.0
class ViewClothes: UIViewController, UITableViewDelegate,
UITableViewDataSource {
// MARK: Outlets
@IBOutlet weak var ClothesQuantity: UILabel!
@IBOutlet weak var ClothesAmount: UILabel!
@IBOutlet weak var ClothesNames: UITableView!
// MARK: Functions
func tableView(_ tableView: UITableView, numberOfRowsInSection
section: Int) -> Int {
return ClothesList.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath:
IndexPath) -> UITableViewCell {
let list = ClothesNames.dequeueReusableCell(withIdentifier:
"Clothes") as! CustomCells
list.NameLabel?.text = ClothesList[indexPath.row]
list.BuyPriceLabel?.text = "Buy Price: $\
(ClothesBuy[indexPath.row])"
list.FeeLabel?.text = "Fee: \(ClothesFeeArray[indexPath.row])%"
list.SizeLabel?.text = "Size: \(ClothesSize[indexPath.row])"
list.SellLabel?.text = "Sell Price: $\
(ClothesSell[indexPath.row])"
list.ModifiedProfitLabel?.text = ClothesResults[indexPath.row]
return list
}
func tableView(_ tableView: UITableView, commit editingStyle:
UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if(editingStyle==UITableViewCellEditingStyle.delete){
ClothesList.remove(at: indexPath.row)
А вот моя попытка решения:
/* My Attempt at subtracting the removed cell from the total
amount
let placeholder = ClothesResults[indexPath.row]
ClothesTotalAmount = ClothesTotalAmount - Double(placeholder)!
ClothesResults.remove(at: indexPath.row) */
ClothesTotalQty = ClothesList.count
ClothesNames.reloadData()
}
}
Остальной код
override func viewDidAppear(_ animated: Bool) {
ClothesNames.reloadData()
}
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.shadowImage = UIImage()
ClothesNames.delegate = self
ClothesNames.dataSource = self
ClothesQuantity.text = String(ClothesTotalQty)
let totalAmount = ClothesTotalAmount as NSNumber
let totalString = currencyFormatter.string(from: totalAmount)
ClothesAmount.text = totalString