首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Swift 3、ReativeKit和Bond绑定自定义对象数组

如何使用Swift 3、ReativeKit和Bond绑定自定义对象数组
EN

Stack Overflow用户
提问于 2017-01-11 00:27:21
回答 1查看 1.2K关注 0票数 1

背景I有一个IOS应用程序,可以接收实时数据流.我已经实现了自定义值对象来存储/捕获活动流中的数据。现在,我需要将我的自定义数据对象绑定到UI (主要使用表视图和自定义单元格来调用这些自定义对象值)。

问题如何使用Swift 3中的邦德、ReactiveKit或其他框架将自定义对象值数组绑定到UI?

示例代码

代码语言:javascript
复制
public class Device {
    var name: String
    var status: String
}
public class DeviceController {
    var devices = Array<Device>()
    // more code to init/populate array of custom Device classes
}
public class CustomViewController: ... {
    var deviceController = DeviceController()
    var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // more code to register custom cell
}
public class CustomCell:UITableviewCell {
    @IBOutlet weak var deviceName: UILabel!
    @IBOutlet weak var deviceStatus: UILabel!
}
EN

回答 1

Stack Overflow用户

发布于 2017-01-11 01:11:43

您可以使用委托模式,它已经为许多UIKit元素(包括UITableView )设置了。

UITableView有两个属性,可以是符合两个协议的任何对象,特别是

代码语言:javascript
复制
var dataSource: UITableViewDataSource?
var delegate: UITableViewDelegate?

因此,对于您的UITableView,您分配一个对象作为dataSource和委托。通常,但并不总是,一个人会使包含的ViewController同时成为dataSource和委托。

代码语言:javascript
复制
override func viewDidLoad() {
    tableView.dataSource = self
    tableView.delegate = self
    ...
}

但是,您首先必须使ViewController符合这些协议。

代码语言:javascript
复制
public class CustomViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

命令单击这两个一致性声明,您就可以看到必须添加到视图控制器中的方法才能符合。他们做什么是很明显的,你可能会从那里找出答案。

但具体而言,您需要添加numberOfRows、numberOfSections和这个方法,我认为这就是您要问的方法。

代码语言:javascript
复制
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // dequeue a cell for reuse
    // type cast the cell to your UITableViewCell subclass
    // set the device name and device status labels like so..

    cell.deviceName = deviceController.devices[indexPath.row].name
    cell.deviceStatus = deviceController.devices[indexPath.row].status
    return cell
}

从那里开始,tableView将在子视图布局时自动请求数据。如果您的数据不是即时可用的,则可以在数据可用时调用tableView.reloadData()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41580830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档