可以在多个UITableView中使用同一UITableviewcell吗?

时间:2018-08-08 06:54:44

标签: ios swift uitableview swift4

我想问你的是“一个UITableviewcell是否可以用于多个tableview,例如可以随时用于android中的recyclerview的viewholder?” do是在一个viewcontroller中,我有一个带有自定义单元格的tableview,并给了它正常的标识符,但是如果我试图在另一个uitableview中使用另一个Viewcontroller在上一个表格视图中,它总是给我一个带有白色背景的空白单元格。有没有办法像那样使用它?

编辑:这是我已经为其设置了cellforrow时的表格视图。 Click to view,这是我的单元格Click to view cell,这是我在表格视图中不同单元格的代码,如果我在当前表格视图中使用那两个单元格,它将起作用

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        if indexPath.section == 0{
            let cell = self.mytable.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! HistoryItemTableCell
            let view = UIView(frame: CGRect(x: 0, y: cell.frame.maxY, width: cell.frame.size.width, height: cell.frame.size.height))
            view.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.3)
            cell.selectedBackgroundView = view

            let order = OrderItemObj
            cell.num_of_day.text = "\(order.ticket_type.name)"
            cell.ref_num.text = order.order_tx_number
            cell.quantity.text = order.number_tickets
            cell.price.text = "$\(order.ticket_type.price).00 USD"

            if order.status == "unpaid"{
                cell.ic_status.image = UIImage(named: "ic_status_unpaid")
            }else{
                cell.ic_status.image = UIImage(named: "ic_status_paid")
            }
            cell.start_date.text = "\(order.start_date)"
            cell.end_date.text = "\(order.expired_date)"
            return cell
        }else{
            let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! OrderDetailTicketCell
            let t = listTicket[indexPath.row]
            cell.dob.text = t.dob
            cell.gender.text = t.sex
            cell.nation.text = t.nationality
            let url = URL(string: t.photo)
            cell.imageN.kf.setImage(with: url)
            return cell
        }
    }

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if section == 0 {
            return 3
        }else{
            return self.listTicket.count
        }
    }
override func viewDidLoad(){
        super.viewDidLoad()
        mytable.register(HistoryItemTableCell.self, forCellReuseIdentifier: "cell")

        ViewHistoryItem()
        mytable.dataSource = self
        mytable.delegate = self

    }

1 个答案:

答案 0 :(得分:3)

可以。您必须为新的tableView重新注册。就像您使用相同类型创建变量一样。这也是可用于创建对象的类。不管您在哪里使用它。

另一方面,如果您要询问tableView中存在的同一单元格的实例是否可以在另一个tableView重用,那么答案是< strong>否,因为它们仅针对该特定tableView注册。