加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – Swift 3 tableView在reloadData()上没有更新

发布时间:2020-12-14 17:15:00 所属栏目:百科 来源:网络整理
导读:我正在构建一个主细节应用程序.我有一个部分视图控制器(VC),它是主VC的子代.单击VC部分中的行会显示用户完成所需信息的不同详细信息VC.一旦详细VC中的信息完成,我希望在VC行的相关部分中显示复选标记. FYI selectedProject是核心数据对象. 我在详细VC viewWi
我正在构建一个主细节应用程序.我有一个部分视图控制器(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()
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读