如何在 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) 对于索引路径行的单元格如何给出? @马利克 这取决于业务逻辑。您需要了解这一切如何运作的概念,然后从那里开始以最适合您需求的方式对其进行修改。基本上这里发生的是你有一个Array
的String: [String]
。 Array(finalDict.keys)
行为您提供了所有键的数组。获得密钥后,您可以使用finalDict[someKey]
访问任何密钥的对应数组。访问字符串数组后,可以通过arrayOfStrings[desiredIndex]
提取值
好的,谢谢我明白了,在输出响应运营商标题中,方法标题也像那个数量我需要了解如何实现任何想法? @马利克
不完全确定你在问什么。能否举例说明一下?【参考方案2】:
请尝试将self.finalDict.keys
替换为Array(self.finalDict.keys)
。
【讨论】:
以上是关于如何在 swift 3 中的表格视图中显示数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据swift 3中的集合视图高度动态增加表格视图高度?