xcode 如何在 Swift 中从具有多种内容类型的字典中制作表格?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/26453675/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 05:55:37  来源:igfitidea点击:

How to make a table from a dictionary with multiple content types in Swift?

xcodeuitableviewswiftios8xcode6

提问by Sh.v

I have made an NSArray with NSDictionary objects containing contents downloaded from an api. I also made a tableview object on main.storyboard with a prototype cell with a UIImage label and two text labels as its contents. How can I put the data from array to table so that each cell with same style as my prototype shows contents of NSDictionary from the array.

我用 NSDictionary 对象制作了一个 NSArray,其中包含从 api 下载的内容。我还在 main.storyboard 上创建了一个 tableview 对象,其中包含一个带有 UIImage 标签和两个文本标签作为其内容的原型单元格。如何将数据从数组放到表格中,以便与我的原型具有相同样式的每个单元格显示数组中 NSDictionary 的内容。

回答by Kostiantyn Koval

You have to implement UITableViewDataSource methods
Remember to set dataSource property of tableView to ViewController
Than you get one object(your NSDictionary) from array and set cell labels and imageView with it's data.

您必须实现 UITableViewDataSource 方法
记住将 tableView 的 dataSource 属性设置为 ViewController
比从数组中获取一个对象(您的 NSDictionary)并使用它的数据设置单元格标签和 imageView 。

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:NSIndexPath) -> UITableViewCell  

Here is full Code example in Swift. Objective-C is very similar

这是Swift. Objective-C 非常相似

class MasterViewController: UITableViewController {

   var objects = [
    ["name" : "Item 1", "image": "image1.png"],
    ["name" : "Item 2", "image": "image2.png"],
    ["name" : "Item 3", "image": "image3.png"]]

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

  override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

    let object = objects[indexPath.row]

    cell.textLabel?.text =  object["name"]!
    cell.imageView?.image = UIImage(named: object["image"]!)
    cell.otherLabel?.text =  object["otherProperty"]!

    return cell
  }

}