tableView 数据源修改后,reloaddata数据没有更新

本文介绍了一个SwiftUI应用中遇到的问题:点击按钮后未能成功清空TableView Cell中的数据。通过排查发现是因为键盘事件导致数据未被清空。文章提供了具体的解决方法,即在点击按钮时取消第一响应者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

点击一个按钮,要清空一个cell的数据,但是reload没有清空。如图


点击物业管理处,要清空公司名称,但是没有如图



解决过程:

1.查看代码并debug发现在点击按钮的时候的确已经执行了清空操作

 func radioReturn(type:OutRegisterSubmitRadioCellType) {
        
        
        
        debugPrint("传过来的radiocelltype数据 \(radiocelltype.rawValue)")
        
        self.radiocelltype = type
        
        //清空公司名称
        var model = self.promptlist[0]
        
        
        model.infoValue = ""
        
       
        
        
        if self.radiocelltype == .manage {
            model.mustEnter = false
        }else{
            model.mustEnter = true
        }
        

        
        self.promptlist[0] = model
        
      
        
        self.tableView.reloadData()
    }

tableView

但是debug到tableView(at)的时候,发现还是数据还在。

2.发现点击按钮的时候键盘还在,猜测是reloaddata时,键盘事件才执行消失,相当于把键盘的数据又重新写到了那个里面,验证发现的确是这样,如图




解决方案:

找到点击按钮事件,执行取消第一响应者即可

 //取消第一响应者相应事件
        UIApplication.shared.sendAction(#selector(resignFirstResponder), to: nil, from: nil, for: nil)

项目代码修改为:

func buttonClick(_ sender:RadioButton)  {
        
        //取消第一响应者相应事件
        UIApplication.shared.sendAction(#selector(resignFirstResponder), to: nil, from: nil, for: nil)
        
       
        var returntype:OutRegisterSubmitRadioCellType
        
        switch sender.tag {
        case 1001:
            returntype = .outsource
        case 1002:
            returntype = .specified

        case 1003:
             returntype = .manage
        default:
             returntype = .outsource
        }
        
        if self.raidoReturnB != nil {
            
        
            self.raidoReturnB!(returntype)
        }
        
        
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值