如何在 swift 3 中的表格视图中显示数据?

Posted

技术标签:

【中文标题】如何在 swift 3 中的表格视图中显示数据?【英文标题】:How to display data in table view in swift 3? 【发布时间】:2017-10-31 06:33:18 【问题描述】:

在这里我需要将数据传递给表格视图以显示并得到很多错误谁能帮助我如何在此处实现此键应显示为节标题标题,内部值应显示在行中

这是数组的声明

var finalDict = [String: [String]]()

数组的输出如下所示

["Flat Rate": ["Fixed", "Base", "Fixed two"], "Best Way": ["Worldwide Express Saver one", "Table Rate", "Worldwide Expedited", "Worldwide Express Saver"]]

这是表格视图的代码

func numberOfSections(in tableView: UITableView) -> Int 
        return finalDict.count
    
    func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? 
        let names = self.finalDict.keys
        return names[section]
    
    func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) 
        let header = view as! UITableViewHeaderFooterView
        header.tintColor = UIColor.white
        header.textLabel?.textColor = UIColor.darkGray
        header.textLabel?.textAlignment = NSTextAlignment.left
        header.textLabel?.font = UIFont(name: "Futura", size: 17)
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        let names = self.finalDict.keys
        let a :[Any]  = finalDict[names] as! [Any]
        return a.count
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCell(withIdentifier: "shippingCell", for: indexPath) as! ShippingMethodTableViewCell
        let key = self.keys[indexPath.section]
        progressIcon.stopAnimating()
        progressIcon.hidesWhenStopped = true
        var a :[Any]  = arrayss[key] as! [Any]
        var dictionary = a[indexPath.row] as! [String:Any]
        let price = dictionary ["price"]
        let name = dictionary["name"]
        let namePrice = "\(name!)" + "  \(price!)"
        cell.methodLabel.text = namePrice
        cell.radioButton.addTarget(self, action: #selector(paymentRadioAction(button:)), for: .touchUpInside)
        if chekIndex == indexPath 
            cell.radioButton.isSelected = true
         else 
            cell.radioButton.isSelected = false
        
        return cell
    

【问题讨论】:

你能告诉我你得到的确切错误吗? 首先,finalDict 显然不是数组!二、“得到很多错误”你得到的错误是什么? 【参考方案1】:

对于初学者,请更新以下数据源方法

func numberOfSections(in tableView: UITableView) -> Int 
    return finalDict.count

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? 
    let titles = Array(finalDict.keys)
    return titles[section]

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    let titles = Array(finalDict.keys)
    let currentTitle = titles[section]
    let values  = finalDict[currentTitle] as! [String]
    return values.count

【讨论】:

@user0246 self.finalDict.keys 不是 Array 类型,但它是 LazyMapCollection,因此您收到该错误。要解决此问题,请将标题从 self.finalDict.keys 更改为:Array(finalDict.keys) 对于索引路径行的单元格如何给出? @马利克 这取决于业务逻辑。您需要了解这一切如何运作的概念,然后从那里开始以最适合您需求的方式对其进行修改。基本上这里发生的是你有一个ArrayString: [String]Array(finalDict.keys) 行为您提供了所有键的数组。获得密钥后,您可以使用finalDict[someKey] 访问任何密钥的对应数组。访问字符串数组后,可以通过arrayOfStrings[desiredIndex] 提取值 好的,谢谢我明白了,在输出响应运营商标题中,方法标题也像那个数量我需要了解如何实现任何想法? @马利克 不完全确定你在问什么。能否举例说明一下?【参考方案2】:

请尝试将self.finalDict.keys 替换为Array(self.finalDict.keys)

【讨论】:

以上是关于如何在 swift 3 中的表格视图中显示数据?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 swift 3 中显示表格视图?

用数据填充视图中的表格视图,swift2

Swift如何仅在我的数据库中有值时才显示表格视图单元格

如何根据swift 3中的集合视图高度动态增加表格视图高度?

Swift Parse - 本地数据存储并在表格视图中显示对象

如何在iOS swift中的表格视图按钮中进行拉动刷新[重复]