在iOS中,将对象粘贴到UITableView的单元格项中是不被推荐的做法。UITableView的单元格项应该只显示数据,而不应该直接包含对象。
解决方法是将对象的数据提取出来,并将其显示在UITableView的单元格中。
以下是一个示例的解决方案:
首先,创建一个自定义的UITableViewCell类,用于显示对象的数据:
import UIKit
class CustomCell: UITableViewCell {
// 在单元格中显示对象的数据的控件
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var ageLabel: UILabel!
// 更新单元格的数据
func configure(with object: MyObject) {
nameLabel.text = object.name
ageLabel.text = "\(object.age)"
}
}
然后,在UITableView的数据源方法中使用这个自定义的UITableViewCell类来显示对象的数据:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
// UITableView的实例
@IBOutlet weak var tableView: UITableView!
// 对象的数组
var objects: [MyObject] = []
override func viewDidLoad() {
super.viewDidLoad()
// 设置UITableView的数据源和代理
tableView.dataSource = self
tableView.delegate = self
// 初始化对象数组
objects = [MyObject(name: "John", age: 25), MyObject(name: "Mary", age: 30)]
}
// UITableViewDataSource方法
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return objects.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
// 获取对应索引的对象
let object = objects[indexPath.row]
// 使用自定义的UITableViewCell来显示对象的数据
cell.configure(with: object)
return cell
}
}
struct MyObject {
let name: String
let age: Int
}
在上面的示例中,我们创建了一个自定义的UITableViewCell类,其中包含用于显示对象数据的控件。然后,在UITableView的数据源方法中,我们使用这个自定义的UITableViewCell类来显示对象的数据。这样,我们就避免了将对象直接粘贴到UITableView的单元格项中的问题。
下一篇:不要将对象转化为字符串存储