reloadData后无法单击tableView单元格中的按钮
Posted
技术标签:
【中文标题】reloadData后无法单击tableView单元格中的按钮【英文标题】:Can't Click on button in tableView cell after reloadData 【发布时间】:2018-08-02 17:28:16 【问题描述】:我在单元格中实现了 3 个按钮和按钮操作。调用 tableView.reloadData() 后无法单击单元格中的任何按钮。
在控制器中的 func cellForRow 调用 cell?.onbuttonTappedAdd 等。添加元素后,我调用了 tabelViewReloadData。
//TableViewCell
var onButtonTappedAdd : (() -> Void)? = nil
var onButtonTappedRemove : (() -> Void)? = nil
override func awakeFromNib()
super.awakeFromNib()
// Initialization code
func configureCell(orderitem: OrderItem)
self.orderItem = orderitem!
func setButtonGradient()
@IBAction func changeValue(_ sender: Any)
@IBAction func btnAddValue(_ sender: Any)
if let onButtonTappedAdd = self.onButtonTappedAdd
onButtonTappedAdd()
@IBAction func btnRemoveValue(_ sender: Any)
if let onButtonTappedRemove = self.onButtonTappedRemove
onButtonTappedRemove()
//ViewControll cellForRow
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
var cell = tableViewOrderItem.dequeueReusableCell(withIdentifier: "OrderItemCheckoutCell", for: indexPath)
as? OrderItemCheckoutCell
var orderItem = GlobalArray.orderArrayList[indexPath.section].ListOrderItem[indexPath.row]
cell?.configureCell(orderitem: orderItem)
cell?.onButtonTappedAdd =
GlobalArray.orderArrayList[indexPath.section].ListOrderItem[indexPath.row].quantity = GlobalArray.orderArrayList[indexPath.section].ListOrderItem[indexPath.row].quantity! + (GlobalArray.orderArrayList[indexPath.section].ListOrderItem[indexPath.row].Product?.bigValue)!
self.tableViewOrderItem.reloadData()
self.setTotalInfo()
cell?.onButtonTappedRemove =
GlobalArray.orderArrayList[indexPath.section].ListOrderItem[indexPath.row].quantity = GlobalArray.orderArrayList[indexPath.section].ListOrderItem[indexPath.row].quantity! - (GlobalArray.orderArrayList[indexPath.section].ListOrderItem[indexPath.row].Product?.bigValue)!
self.tableViewOrderItem.reloadData()
return cell!
【问题讨论】:
发布cellForRow(at:)
方法的代码
@DuncanC 我尝试了 3 次后同样的问题
在问题中附上cellForRowAt的代码
“我尝试了 3 次同样的问题”。嗯?编辑您的问题并为您的 cellForRow(at:) 方法添加代码,以便我们查看它的作用。
@DuncanC 对不起...我是更新问题
【参考方案1】:
在“cellforRow”方法之外重新加载 TableView
【讨论】:
以上是关于reloadData后无法单击tableView单元格中的按钮的主要内容,如果未能解决你的问题,请参考以下文章
tableview.reloaddata() 在使用 coredata 时搜索栏取消按钮后不起作用
尝试调用 tableView.reloadData 时出现 NSInvalidArgumentException?
在 tableview.reloaddata 崩溃并出现错误 Unexpectedly found nil
Swift 3 tableView 未在 reloadData() 上更新