如何使用从 Swift 3 中的滑块中选择的 JSON 数据更新 tableviewcell?

Posted

技术标签:

【中文标题】如何使用从 Swift 3 中的滑块中选择的 JSON 数据更新 tableviewcell?【英文标题】:How do I update a tableviewcell with JSON data selected from a slider in Swift 3? 【发布时间】:2017-06-15 23:49:43 【问题描述】:

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

如何将显示的 JSON 数据从滑块添加到 tableview 单元格?

这是我当前的代码:

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

【问题讨论】:

【参考方案1】:

你的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]

【讨论】:

以上是关于如何使用从 Swift 3 中的滑块中选择的 JSON 数据更新 tableviewcell?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 WatchKit 滑块中隐藏“+”和“-”按钮?

光滑的滑块 - 随着更多幻灯片加载到滑块中,幻灯片会缩小

如何借助 iOS Swift 中的滑块更改标签的值?

我如何在光滑的滑块中只显示三张幻灯片?

您将如何在 swiftUI/Swift 的滑块轨道中绘制节点?

Swift 中的滑块弹出框