如何在iOS Swift中将值数组附加到tableView中?

时间:2019-09-12 18:38:53

标签: arrays json swift uitableview dictionary

TableView包含动态标签列表,导航栏包含两个按钮,分别称为上和下。

在这里,我从json获取数据并追加到模型。但是我无法在tableview中列出。数组值应加载到标签列表中。

这是我的json附加到模型:

   [PO_PR.poItemsModel(Material: Optional("RMECC_MOB1"), Qty: Optional("2.000"), UoM: Optional("KG"), totalValue: Optional("1000.000"), Requistor: Optional(""), StorageLocation: Optional("3001"), MatGrp: Optional("00107"), valuationPrice: Optional("1000.000"), ItemCategory: Optional("0"), lineNo: Optional("00010"), UnitofPrice: Optional("1.000")),

PO_PR.poItemsModel(Material: Optional("RMECC_MOB1"), Qty: Optional("2.000"), UoM: Optional("KG"), totalValue: Optional("1000.000"), Requistor: Optional(""), StorageLocation: Optional("3001"), MatGrp: Optional("00107"), valuationPrice: Optional("1000.000"), ItemCategory: Optional("0"), lineNo: Optional("00020"), UnitofPrice: Optional("1.000"))] 

首先将第一个索引的数组加载到标签列表,然后按下按钮时,将数组值的下一个加载到标签列表。

tableview中的标签将位于每个单元格中,而不是单个单元格中。

这是我的模特:

struct poItemsModel {

var Material       : String?
var Qty            : String?
var UoM            : String?
var totalValue     : String?
var Requistor      : String?
var StorageLocation: String?
var MatGrp         : String?
var valuationPrice : String?
var ItemCategory   : String?
var lineNo         : String?
var UnitofPrice    : String?

init(json: JSON) {

Material = json["Material"].stringValue
Qty = json["Quantity"].stringValue
UoM = json["OrderUnit"].stringValue
totalValue = json["NetPrice"].stringValue
Requistor = json["Requistor"].stringValue
StorageLocation = json["StorageLocation"].stringValue
MatGrp = json["MatGroup"].stringValue
valuationPrice = json["NetPrice"].stringValue
ItemCategory = json["ItemCat"].stringValue
lineNo = json["Item"].stringValue
UnitofPrice = json["UnitofPrice"].stringValue

}
 }

在这里我将json数据绑定到模型:

    func GetPoItemCount() {

      if orderNo != nil {
    // Call API
        print("orderni::\(orderNo!)")
        PoVendorListApiManager.sharedInstance.getPoListWithModel(orderString: orderNo!){ (json:JSON) in
        // return json from API
            if let results = json["d"]["results"].array {
                print("catefory::\(results)")


                for category in results {

                     self.PoItemsArray.append(poItemsModel(json: category))

                    for (key, value) in category {
                        print("keyvalue\(key)\(value)")

                        self.poItemJsonArray.append(value)
                        self.poItemKeyArray.append(key)
                        let currency = newPrItemDetailModel(key: key, value: value)
                        self.newItemDetailsArray.append(currency)

                      }

                }

                let elm = self.PoItemsArray
                let mirror = Mirror(reflecting: elm)
                for child in mirror.children  {
                    print("key: \(String(describing: child.label)), value: \(child.value)")
                }

                print("self.PoItemsArray array:::\(self.PoItemsArray)")
                print("new model array:::\(self.newItemDetailsArray)")

                DispatchQueue.main.async { 
                    self.tableView.reloadData()

                }
            }
        }
     }
   }

  }//extension

这是我的tableview代码:

      func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    //        PoItems = loadPoItems()
    print("count::itemArray::\(self.PoItemsArray.count)")
    return PoItemsArray.count

   }

   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! PoItemTableViewCell

    let itemDetails = PoItemsArray[indexPath.row]
   //        for arrayData in

  //        PoItems = loadPoItems()

 //        prItem.getProperty(at: indexPath.row)

 //        cell.materials.text = PoItemsArray[0].key!
 //        cell.materialsValue.text = itemDetails[indexPath.row]



    return cell

  }

这是我要实现的屏幕截图:enter image description here

如何将第一个索引数组加载到动态标签列表中,以及按下按钮时如何将值的下一个数组索引加载到动态标签列表中。

任何帮助都值得赞赏的人。...

1 个答案:

答案 0 :(得分:1)

(实际上)无法使用表视图完成此操作。表格视图适用于相同项目的长列表(可变数量),不变不能更改。您所拥有的是完全不同的项的固定编号(9),它们会进行更改

答案1:

请勿为此使用表格视图。这不是表视图的用途。

只需为您的布局使用StackView-十分简单,仍然可以滚动等。

完成。需要2分钟。


答案2:

如果作为练习您想使用表格视图,那将是错误的:

要做“同步/动态”表非常困难。

  1. 必须 具有自定义单元格类

  2. 按钮(在主屏幕上)必须以某种方式 信号 所有单元格 进行相关更改。

这是一个广泛的研究领域,您必须研究实现此目的的各种方法。