初始导入后,UITableview在iOS 10中不再刷新

时间:2016-09-18 03:12:01

标签: ios uitableview swift2 ios10 reloaddata

我有一个应用程序在首次启动时导入XML文件以创建表。这在iOS 9中运行得非常好。在iOS 10中,它仍然可以正确导入所有数据,并正确执行提取,但在强制退出应用程序并再次打开之前,表格不会显示这些项目。相反,它只显示xml文件中的第一项。当我点击该项目时,它实际上将我带到298项的有序列表中的第一项(这是一个不同的项目)。

链接到显示问题的视频:reloading table issues

订单:

  • 1)应用程序在首次启动时打开,提示用户“导入数据”。分析器 用于导入XML并成功运行XML(我可以打印 每个项目的日志)。
  • 2)App保存importContext并调用 tableView.reloadData
  • 3)此时,数据应该在表格中。 导航标题包括一个正确的计数(298项)。 但是,表中只有1个项目,即XML中的第一个项目 文件。
  • 4)如果我点击那个项目,它会带我去做什么 298项目列表中的第一项(不是实际中的项目) 表)。
  • 5)有趣的是,如果我执行搜索,则为1的名称 item没有改变,但是如果我点击它,它会把我带到项目I 搜索。如果我搜索其他项目并单击1 表中的项目,它将我带到新项目(但仍然没有 更改现有项目的文本) - 所以所有298项都在那里, 只是没有在表中显示。

我试过调用

self.viewDidLoad

self.tableView.reloadData()

dispatch_async(dispatch_get_main_queue()) {
            self.tableView.reloadData()
        }

使用NSNotificationCenter调用所有上述三个函数,然后使用

完成解析
NSNotificationCenter.defaultCenter().postNotificationName("performFetch", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.test), name: "performFetch", object: nil)

但实际上没有任何内容重置tableView中的一个项目(恰好是xml文件中的第一项。同样,所有数据都在那里,只是看不见。

如果我强行退出应用程序并将其重新打开,所有数据都在那里并且可见并且工作得很好。在iOS 10中是否有强制执行tableview刷新的不同/新方法?同样,这个功能在ios 9中运行良好,没有代码改变,但在ios 10中它失败了。我还没有升级到Swift 3.0,因为它会很痛苦。

1 个答案:

答案 0 :(得分:0)

你在cellForRowAtIndexPath:方法中进行单元格配置?我有一个类似的问题,我解决了它在willDisplayCell中移动代码:。