ios – Swift 3 tableView在reloadData()上没有更新
我正在构建一个主细节应用程序.我有一个部分视图控制器(VC),它是主VC的子代.单击VC部分中的行会显示用户完成所需信息的不同详细信息VC.一旦详细VC中的信息完成,我希望在VC行的相关部分中显示复选标记. FYI selectedProject是核心数据对象.
我在详细VC viewWillDisappear中调用通知来刷新VC部分. override func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell",for: indexPath) let detailCase: String = selectedProject!.section![indexPath.row] configureCell(cell,withSectionName: detailCase) print("location complete is (selectedProject!.completeLocation)") print("electricity complete is (selectedProject!.completeElectricity)" print(cell.textLabel!.text!) print(cell.accessoryType.rawValue) return cell } func configureCell(_ cell: UITableViewCell,withSectionName sectionName: String) { switch sectionName { case "Project Details" : cell.accessoryType = .checkmark case "Location" : if selectedProject?.completeLocation == true { cell.accessoryType = .checkmark } case "Electricity Use" : if selectedProject?.completeElectricity == true { cell.accessoryType = .checkmark } default : cell.accessoryType = .none } cell.textLabel!.text = sectionName } func refreshTable(notification: Notification) -> Void { print("Notification ran") self.tableView.reloadData() } 安慰: 通知跑了 位置完整是真的 电力完成是真的 项目细节 3 位置完整是真的 电力完成是真的 地点 3 位置完整是真的 电力完成是真的 电力使用 3 3’s = .checkmark 因此看起来cellForRowAt确切地知道它应该做什么但是表格不容易显示复选标记.相反,您必须单击返回主VC然后转发到VC部分才能显示复选标记,或者您必须单击VC部分中的不同行,并且随机显示复选标记. 我试过在dispatchqueue.main.async中调用reloadData没有运气.我尝试再次在进程中的不同点调用reloadData而没有成功.我已经尝试调用tableView.beginUpdates / .endUpdates和reloadSectionData,再次没有成功获得要显示的复选标记. 如果我以编程方式连续提示VC viewWilDisappear和viewWillAppear部分,则一旦选择了VC部分中的不同行,就会出现复选标记.它“似乎”像reloadData()没有提示完全重载tableView. FYI附件项目在故事板中设置为.none. 解决方法
需要在主队列上调用UI更新.试试这个:
DispatchQueue.main.async { self.tableView.reloadData() } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |