Обновление метки после удаления ячейки - PullRequest
0 голосов
/ 04 июля 2018

Прежде всего, я прошу прощения, если мой заголовок вводит в заблуждение по сравнению с моим вопросом; Я не был уверен, как это выразить. Надеюсь, мои фотографии дают больше объяснений, чем я. Я все еще на начальных этапах разработки под 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

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

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

if(editingStyle==UITableViewCellEditingStyle.delete){  RECALCULATE YOUR AMOUNT AND CLOTHES COUNT HERE OR CALL A FUNCTION FOR SAME ClothesNames.reloadData() } }
0 голосов
/ 04 июля 2018

Как сказал @Kamran. Вам нужно пересчитать после удаления ячейки

func tableView(_ tableView: UITableView, commit editingStyle: 
    UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        if(editingStyle==UITableViewCellEditingStyle.delete){
            ClothesList.remove(at: indexPath.row)

        ClothesQuantity.text = String(ClothesTotalQty)
        let totalAmount = ClothesTotalAmount as NSNumber
        let totalString = currencyFormatter.string(from: totalAmount)
        ClothesAmount.text = totalString

            ClothesTotalQty = ClothesList.count
            ClothesNames.reloadData()
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...