当Int值为0时从数组(tableView)中删除

时间:2018-06-13 19:53:51

标签: arrays swift uitableview

我正在练习我的koding,试图创建一个可以跟踪我工作中的存储空间的应用程序 我有一个tableView,列出了一个广泛的项目列表。如果我们想要将卫生纸添加到存储器中,我会在tableView中找到该项目,然后按项目(单元格)。然后我使用prepareForSegue将信息传递给新的ViewController 在新的ViewController中,我有一个minusButton,一个plusButton和一个标签。标签显示项目的名称,pluss-和minusButton计算该项目的数量 当项目数量>> = 1时,它应显示在tableView中。

在tabBarContoller中完成可用项目列表和存储中项目列表之间的选择。

ViewController的代码,包含可用项目:

class AvailableItemsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    let itemsArray = ["Hand soap", "Hand towles", "Toilet paper", "Lightbulbs"]

    @IBOutlet weak var tableView: UITableView!


    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.dataSource = self
        tableView.delegate = self

        // Do any additional setup after loading the view.
    }

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


    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ItemsCell") as! AvailableItemsTableViewCell

cell.ItemsLabel.text = itemsArray[indexPath.row]

        return cell
    }



        let itemsSegueIdentifier = "ItemsSegue"

    override func prepare(for segue: UIStoryboardSegue, sender: Any?)
    {
        if segue.identifier == itemsSegueIdentifier
        {
            let destination = segue.destination as! ItemInfoViewController
            let itemIndex = tableView.indexPathForSelectedRow?.row

                if itemIndex == 0
                {
                    destination.itemName = "Hand soap"
                }
                if starterIndex == 1
                {
                    destination.itemName = "Hand towles"
                }
                if starterIndex == 2
                {
                   destination.itemName = "Toilet paper"
                }
                if starterIndex == 3
                {
                   destination.itemName = "Lightbulbs"
                }

            }
        }
    }

}    

下一个ViewController:

class ItemInfoViewController: UIViewController {

    var counter = Int()
    var itemName = String()


    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var counterLabel: UILabel!
    @IBAction func plussBUtton(_ sender: UIButton)
    {
        counter += 1
        counterLabel.text = String (counter)

        if let tbc = self.tabBarController as? CustomTabBarController
        {
           tbc.totalArray.append("\(counter) pcs \(itemName))")

        }


    }
    @IBAction func minusButton(_ sender: UIButton)
    {
        if counter != 0
        {
            counter -= 1
        }
        //Remove from totalArray
        let valueToCheck = itemName

        if let tbc = self.tabBarController as? CustomTabBarController
        {

           tbc.totalArray = tbc.totalArray.filter { $0 != valueToCheck }

        counterLabel.text = String (counter)
        }
    }


    override func viewDidLoad() {
        super.viewDidLoad()

        itemLabel.text = itemName
        counterLabel.text = String (counter)

        // Do any additional setup after loading the view.
    }    
当计数器为0时,我很难从totalArray中删除 当我不连接tbc.totalArray = tbc.totalArray.filter { $0 != valueToCheck }counter

时,命令itemName正常工作

那么,当计数器命中0时,我应该如何从数组中删除?

1 个答案:

答案 0 :(得分:0)

由于您在增加计数器后附加到totalArray,因此在删除时也需要以相反的顺序进行,否则计数器不会匹配。所以首先删除(过滤器)然后减少计数器。