RxSwift 3.1 UITableView 数据源不工作
RxSwift 3.1 UITableView data source not working
我在我的新项目中通过 Carthage 使用 RxSwift 3.1 (Galois),我刚刚尝试使用我在网上和文档中找到的一些示例将数据绑定到 UITableView - 其中之一是这个文件:
https://github.com/ReactiveX/RxSwift/blob/master/RxExample/RxExample/Examples/SimpleTableViewExample/SimpleTableViewExampleViewController.swift
我的代码现在看起来像这样(我已经尝试将其简化,因为我想要的工作没有):
class ChooseCityView: UIViewController, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
let dataSource = Observable.just((0..<20).map { "\([=10=])" })
let disposeBag = DisposeBag()
dataSource.bindTo(tableView.rx.items(cellIdentifier: "CityCell", cellType: UITableViewCell.self)) {
(row, city, cell) in
cell.backgroundColor = .white
cell.textLabel?.text = "test \(city)"
}.addDisposableTo(disposeBag)
// Remove empty cells
tableView.tableFooterView = UIView()
}
}
不过,在 运行 之后,模拟器中的应用程序将不会显示任何行。我在 tableView 上有一个名为 "CityCell" 的原型单元格,类型为 Basic。另外,我确保插座与实际的 tableView 绑定。我做错了什么?或者这是一个错误?
提前致谢:)
一段时间后,我找到了解决方案。添加 disposeBag
作为视图控制器的 属性。对于您的代码:
class ChooseCityView: UIViewController, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
let dataSource = Observable.just((0..<20).map { "\([=10=])" })
dataSource.bindTo(tableView.rx.items(cellIdentifier: "CityCell", cellType: UITableViewCell.self)) {
(row, city, cell) in
cell.backgroundColor = .white
cell.textLabel?.text = "test \(city)"
}.addDisposableTo(disposeBag)
// Remove empty cells
tableView.tableFooterView = UIView()
}
}
我在我的新项目中通过 Carthage 使用 RxSwift 3.1 (Galois),我刚刚尝试使用我在网上和文档中找到的一些示例将数据绑定到 UITableView - 其中之一是这个文件: https://github.com/ReactiveX/RxSwift/blob/master/RxExample/RxExample/Examples/SimpleTableViewExample/SimpleTableViewExampleViewController.swift
我的代码现在看起来像这样(我已经尝试将其简化,因为我想要的工作没有):
class ChooseCityView: UIViewController, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
let dataSource = Observable.just((0..<20).map { "\([=10=])" })
let disposeBag = DisposeBag()
dataSource.bindTo(tableView.rx.items(cellIdentifier: "CityCell", cellType: UITableViewCell.self)) {
(row, city, cell) in
cell.backgroundColor = .white
cell.textLabel?.text = "test \(city)"
}.addDisposableTo(disposeBag)
// Remove empty cells
tableView.tableFooterView = UIView()
}
}
不过,在 运行 之后,模拟器中的应用程序将不会显示任何行。我在 tableView 上有一个名为 "CityCell" 的原型单元格,类型为 Basic。另外,我确保插座与实际的 tableView 绑定。我做错了什么?或者这是一个错误?
提前致谢:)
一段时间后,我找到了解决方案。添加 disposeBag
作为视图控制器的 属性。对于您的代码:
class ChooseCityView: UIViewController, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
let dataSource = Observable.just((0..<20).map { "\([=10=])" })
dataSource.bindTo(tableView.rx.items(cellIdentifier: "CityCell", cellType: UITableViewCell.self)) {
(row, city, cell) in
cell.backgroundColor = .white
cell.textLabel?.text = "test \(city)"
}.addDisposableTo(disposeBag)
// Remove empty cells
tableView.tableFooterView = UIView()
}
}