在一个单元格中加载多个 Xib 视图
Loading Multiple Xib View in one cell
我的tableview有3层
第一:页眉
第二:节
第三名:xibviews
我的tableviewCell加载Xibs视图依赖于indexPath.row
例如 indexPath.row 在 2 ,我想加载 CDFlightXibView
但是滚动太慢
我该怎么办?
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch indexPath.section {
case 0:
print("contract detail")
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let vieww = Bundle.main.loadNibNamed("CDContractXibView", owner: self, options: nil)?.first as? CDContractXibFile
vieww?.fillData()
cell.contentView.addSubview(vieww!)
vieww?.frame = cell.contentView.frame
vieww?.center = cell.contentView.center
return cell
case 1:
print("passenger")
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let vieww = Bundle.main.loadNibNamed("CDPassengerInFlightXibView", owner: self, options: nil)?.first as? CDPassengerInFlightXibFile
vieww?.fillData()
cell.contentView.addSubview(vieww!)
vieww?.frame = cell.contentView.frame
vieww?.center = cell.contentView.center
return cell
case 2:
print("flight")
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let vieww = Bundle.main.loadNibNamed("CDFlightXibView", owner: self, options: nil)?.first as? CDFlightXibFile
vieww?.fillData()
vieww?.detailBtn.addTarget(self, action: #selector(showPassenger(_:)), for: .touchUpInside)
vieww?.detailBtn.tag = indexPath.row
cell.contentView.addSubview(vieww!)
vieww?.frame = cell.contentView.frame
vieww?.center = cell.contentView.center
return cell
default:
print("nothing")
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
return cell
}
您每次滚动时都会加载多个 xib 文件,所有这些操作都需要进行计算,这会导致滚动延迟。
尝试为每个状态设计特定的 UITableViewCell,并按 indexPath.section 例将它们出列。
我的tableview有3层
第一:页眉
第二:节
第三名:xibviews
我的tableviewCell加载Xibs视图依赖于indexPath.row
例如 indexPath.row 在 2 ,我想加载 CDFlightXibView
但是滚动太慢
我该怎么办?
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch indexPath.section {
case 0:
print("contract detail")
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let vieww = Bundle.main.loadNibNamed("CDContractXibView", owner: self, options: nil)?.first as? CDContractXibFile
vieww?.fillData()
cell.contentView.addSubview(vieww!)
vieww?.frame = cell.contentView.frame
vieww?.center = cell.contentView.center
return cell
case 1:
print("passenger")
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let vieww = Bundle.main.loadNibNamed("CDPassengerInFlightXibView", owner: self, options: nil)?.first as? CDPassengerInFlightXibFile
vieww?.fillData()
cell.contentView.addSubview(vieww!)
vieww?.frame = cell.contentView.frame
vieww?.center = cell.contentView.center
return cell
case 2:
print("flight")
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let vieww = Bundle.main.loadNibNamed("CDFlightXibView", owner: self, options: nil)?.first as? CDFlightXibFile
vieww?.fillData()
vieww?.detailBtn.addTarget(self, action: #selector(showPassenger(_:)), for: .touchUpInside)
vieww?.detailBtn.tag = indexPath.row
cell.contentView.addSubview(vieww!)
vieww?.frame = cell.contentView.frame
vieww?.center = cell.contentView.center
return cell
default:
print("nothing")
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
return cell
}
您每次滚动时都会加载多个 xib 文件,所有这些操作都需要进行计算,这会导致滚动延迟。
尝试为每个状态设计特定的 UITableViewCell,并按 indexPath.section 例将它们出列。