json - 如何使用从 Swift 3 中的 slider 选择的 JSON 数据更新 tableviewcell?

标签 json swift uitableview swift3 slider

我需要用 slider 的值更新单元格。 slider 正在从已解析的 JSON 数据中提取数据。

如何将 slider 中的 JSON 数据显示添加到表格 View 单元格?

这是我当前的代码:

import UIKit

class SliderViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var sliderTableView: UITableView!
@IBOutlet weak var styleSlider: UISlider!
@IBOutlet weak var abvSlider: UISlider!
@IBOutlet weak var ibuSlider: UISlider!
@IBOutlet weak var testLabel: UILabel!

@IBAction func styleSlider(_ sender: Any) {
// LABEL CREATED FOR TESTING PURPOSES ONLY
    testLabel.text = String(Int(styleSlider.value))
}

var beersMatch = [Beer]()
var filteredBeersMatch = [Beer]()
var filters = [BeerStyle]()
var selectedCells: [Bool] = []
let apiManager = APIManager()

override func viewDidLoad() {
    super.viewDidLoad()

    apiManager.TapList { (fetchedBeers) in
        self.beersMatch = fetchedBeers

        var setFilters = Set<BeerStyle>()
        for beer in fetchedBeers {
            setFilters.insert(beer.StyleName)
        }

        self.filters = Array(setFilters)

        DispatchQueue.main.async {
            self.sliderTableView.reloadData()
        }
    }
}

// MARK: Table view data source
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 
-> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: 
"SliderListCell") as? SliderTableViewCell else {
    return UITableViewCell()
}

// MARK: Beer name
let beers = filteredJsonMatch[indexPath.row]
cell.sliderMatchLabel.text = beers.BrewName
cell.sliderMatchName.text = beers.BevName
cell.sliderMatchRowNumber.text = jsons.DisplayName

if let IBU = beers.Ibu {
    cell.sliderMatchIBU.text = "\(IBU) IBU"
}

if let ABV = beers.Abv {
    cell.sliderMatchABV.text = "\(ABV)%"
}

cell.sliderMatchJsonType.text = jsons.StyleName.name
cell.sliderMatchLocation.text = jsons.Location
cell.sliderMatchKegImage.image = jsons.kegPercentageFull()

// MARK: Download image
jsons.downloadImage { (jsonImage) in
    DispatchQueue.main.async {
        cell.sliderMatchImage.image = jsonImage
    }
}
return cell
}

最佳答案

你的 filteredJsonMatch 是什么?它不应该是 filters 吗,因为您将加载的啤酒添加到您的 filters 数组中?

在你的 TapList 闭包中:

var setFilters = Set<BeerStyle>()
for beer in fetchedBeers {
   setFilters.insert(beer.StyleName)
}

self.filters = Array(setFilters)

但是当您将数据填充到每个单元格时:

let beers = filteredJsonMatch[indexPath.row]

关于json - 如何使用从 Swift 3 中的 slider 选择的 JSON 数据更新 tableviewcell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44578696/

相关文章:

javascript - 根据允许的项目数组删除 JSON 项目

json - 如何将django模型保存到json文件中

ios - tableViewCell 可以同时可移动并具有 .none 编辑风格的滑动操作吗

c# - 序列化 api 数据时出错 : cannot be serialized to JSON because its IsReference setting is 'True'

json - 将 JSON 数据对象从 jquery ajax 传递到 asp.net webmethod

swift - 在 Swift 中创建 IBOutlet 结果为 'class is not constructible with ()'

ios - 如何完全重新加载 View ?

ios - 如何根据模式使用 swift 在 Xcode 中设置背景图像?

ios - uitableview 自动调整大小中图像和单元格的动态高度

ios - NSMutableAttributedString 不会显示以非零索引开始的属性