UITableView仅在第二次尝试时重新加载数据

时间:2016-01-17 14:49:46

标签: ios swift uitableview segue

我有两个UITableView控制器,A和B.如果用户点击表A的第一个单元格,则用户将被重定向到包含10个单元格的表B.如果用户单击表A的单元格2,则用户将被重定向到具有1个单元格的表B.

理论

  • 点击1:表A,第一行--->表B包含10个单元格(具有关联URL的布局)
  • 点击2:表A,第二行--->表B包含1个单元格(带有关联URL的布局)

我观察到的错误是这样的: 首次点击表A的第一行,然后点击表A的第二行时,表格B显示10个单元格。这些单元格中的9个不可点击,并且第一个单元格与应该显示的唯一单元格相同(但是其他9个单元格的布局不是可单击的单元格)。只有当单击后退按钮并再次单击表A的第二行时,才能在表B中正确显示1个单元格。

实践

  • 点击1:表A,第一行--->表B具有0个单元
  • 点击2:表A,第一行--->表B有10个单元格(布局有 相关网址)
  • 点击3:表A,第二行--->表B有10个细胞 (仅限布局;具有关联URL的第一个单元格)
  • 点击4:表A,第二行--->表B包含1个单元格(带有关联URL的布局)

我相信其他人遇到了同样的错误(UITableView only sending data to Detail View Controller on Second Try)。但是,反馈是针对Objective C的,所以我不知道该怎么做。

我的segue的代码是:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "viewOverviewArticle" {
        if let indexPath = self.tableView.indexPathForSelectedRow {
            let recentObject = self.fetchedResultsController.objectAtIndexPath(indexPath)
            let controller =  segue.destinationViewController as! ArticleAnalysis
            controller.analysisItem = recentObject
        }
    }
}

假设我确实遇到与UITableView only sending data to Detail View Controller on Second Try相同的问题,我的问题归结为:

如何确保点击表格中的行时触发的segue具有最新数据?

1 个答案:

答案 0 :(得分:0)

将用于删除旧保存数据的命令从viewWillAppear移至viewWillDisappear - 修复了该错误。