我的应用程序中有一个表格视图。在此,我正在加载我的数据。我希望如果第一个单元格中的数据加载的高度应为120,其余单元格的高度应为50。我在didSelect委托中也有条件,如果用户选择该单元格,则当前单元格的高度将增加到120,其余单元格的高度为50 。我如何显示我的第一个单元格高度120,其余的保持50这是我在表视图加载数据时的代码。
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dishNameArray.count
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if (flag == true && indexPath.row == indexValue) {
return 120
}
else {
return 40
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = cartTableView.dequeueReusableCell(withIdentifier: "cartCell", for: indexPath) as! CartTVC
cell.dishNameLbl.text = dishNameArray[indexPath.row]
cell.eachPriceLbl.text = priceArray[indexPath.row]
cell.quantityLbl.text = "1"
cell.qtyLbl.text = "1"
cell.totalPriceLbl.text = priceArray[indexPath.row]
cell.deleteBtn.tag = indexPath.row
cell.deleteBtn.addTarget(self, action: #selector(crossBtnTapped), for: .touchUpInside)
cell.selectionStyle = .none
return cell
}
@objc func crossBtnTapped(sender: UIButton) {
dishNameArray.remove(at: sender.tag)
let indexPath = IndexPath.init(row: sender.tag, section: 0)
let cell = cartTableView.cellForRow(at: indexPath) as! CartTVC
print(cell)
cartTableView.reloadData()
print(sender.tag)
print("II:\(dishNameArray.count)")
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("Yes")
indexValue = indexPath.row
if flag && indexValue == indexPath.row{
// rfpNumberTableView.beginUpdates()
let cell = self.cartTableView.cellForRow(at: indexPath) as! CartTVC
cell.bgView.backgroundColor = #colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)
self.cartTableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.none)
// cartTableView.endUpdates()
flag = false
}
else{
let cell = self.cartTableView.cellForRow(at: indexPath) as! CartTVC
cell.bgView.backgroundColor = #colorLiteral(red: 0.9529120326, green: 0.3879342079, blue: 0.09117665142, alpha: 1)
// rfpNumberTableView.beginUpdates()
self.cartTableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.none)
// cartTableView.endUpdates()
flag = true
}
}
答案 0 :(得分:1)
您可以尝试
var indexValue = 0
//
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == indexValue {
return 120
else {
return 50
}
}
//
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = cartTableView.dequeueReusableCell(withIdentifier: "cartCell", for: indexPath) as! CartTVC
if indexPath.row == indexValue {
cell.bgView.backgroundColor = #colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)
}
else {
cell.bgView.backgroundColor = #colorLiteral(red: 0.9529120326, green: 0.3879342079, blue: 0.09117665142, alpha: 1)
}
cell.dishNameLbl.text = dishNameArray[indexPath.row]
cell.eachPriceLbl.text = priceArray[indexPath.row]
cell.quantityLbl.text = "1"
cell.qtyLbl.text = "1"
cell.totalPriceLbl.text = priceArray[indexPath.row]
cell.deleteBtn.tag = indexPath.row
cell.deleteBtn.addTarget(self, action: #selector(crossBtnTapped), for: .touchUpInside)
cell.selectionStyle = .none
return cell
}
//
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("Yes")
if indexValue != indexPath.row {
let oldIndex = IndexPath(row: indexValue , section: 0)
indexValue = indexPath.row
self.cartTableView.reloadRows(at: [indexPath,oldIndex], with: UITableViewRowAnimation.none)
}
}