如何在Pickerview中保存tableviewCell与不同类别的数据?

时间:2017-05-13 08:42:03

标签: ios iphone swift uitableview uipickerview

我有一张桌面,里面装满了水果,蔬菜,肉。我在使用UIPickerView更改类别时遇到了问题,我之前保存在数组中的数据被删除了。

我不知道如何处理这个问题。如何保存以前的类别数据以及用户更改类别?

以下是我正在处理的一些代码。

CellForRowAt

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "adddiseasefoodcell", for: indexPath) as! AddDiseaseTableViewCell
    print(indexPath.row)
    cell.foodname.text = foodname[indexPath.row]
    cell.foodimg.image = imagereturn(urrl: foodimage[indexPath.row])
    cell.unitlbl.text = foodunit[indexPath.row]
    cell.callbl.text = foodcal[indexPath.row]
    cell.switchFood.tag = indexPath.row
    cell.switchFood.isUserInteractionEnabled = false
    print(check[indexPath.row]!)
   // check[indexPath.row] = false
    if check[indexPath.row]!
    {
        cell.switchFood.isOn = true
    }
    else
    {
        cell.switchFood.isOn = false
    }

    cell.switchFood.addTarget(self, action: #selector(buttonClicked(Sender:)), for: UIControlEvents.touchUpInside)

    return cell
}

SaveButtonCode

 func buttonClicked(Sender:UIButton)
    {

        print(Sender.tag)
        let index = NSIndexPath(row: Sender.tag,section:0)
        let cell = foodnametableview.cellForRow(at:index as IndexPath) as! AddDiseaseTableViewCell


        if check[Sender.tag]!
        {
      //  cell.switchFood.isUserInteractionEnabled = true
           cell.switchFood.isOn = false
            check[Sender.tag] = false
        }
        else
        {
        //    cell.switchFood.isUserInteractionEnabled = true
            cell.switchFood.isOn = true
            check[Sender.tag] = true
        }
    }

2 个答案:

答案 0 :(得分:1)

您需要为每个类别创建不同的数组。而且你必须这样做:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       if selectedCategory == .meat {
         return meatArray.count
       }
       // same for other Catgories
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       //Create cell and other configurations
       if selectedCategory == .meat {
          let selectedFood = meatArray(indexPath.row)
          //use selectedFood object to get values and use it in the cell
       }

        return cell!
    }

答案 1 :(得分:0)

我认为更好的实现方法是在数组中添加带有类别的元素,并相应地检索带有索引的数组数据。为此,您必须将数据保存在字典中,类别为键,元素为值。