UITableView混乱

时间:2017-01-26 18:59:24

标签: ios swift uitableview

我很困惑。我有一个动态tableView来显示我的数据和一个loadData()方法,我基本上将数据从JSON加载到tableViewModel。现在我一直想要在每次更新或刷新表时解决数据重复问题,我已经实现了这些:

override func viewDidDisappear(animated: Bool) {
        super.viewDidDisappear(animated)

        // To avoid duplication of data when the table updates or refreshes.
        self.tableViewModel.removeAll(keepCapacity: false)
    }

问题已解决。现在,当我在观看之间切换并返回tableView时,它会给我index out of range错误。我已经尝试在tableView之后重新加载self.tableViewModel.removeAll,但只是为我重新加载空tableView,因为tableViewModel为空。如果我在loadData()之后致电self.tableViewModel.removeAll,它会再次开始复制我的数据。

我该如何解决这个问题?我应该如何充分利用viewDidDisappearviewDidAppearviewWillDisappearviewWillAppear而不重复我的数据,并将自己从index out range错误中解脱出来?

1 个答案:

答案 0 :(得分:0)

对我而言,它可以将self.tableViewModel.removeAll(keepCapacity: false)viewDidDisappear的位置更改为我的oadData()方法:

func loadData() {
        // To avoid duplication of data when the table updates or refreshes.
        self.tableViewModel.removeAll(keepCapacity: false)
        print("Table View Model Cleared: \(self.tableViewModel)”)

        // Now load data from the internet.
}

这样做是每次调用loadData()时使用新数据刷新tableView,以便tableView不保留旧数据并将其与新数据重复。

这也使我免于fatal error: Index out of range作为removeAll,并且加载数据发生在一个方法而不是两个单独的方法中。当我在removeAll中放置viewDidDisappear时,每次切换到另一个视图时它都会清除tableViewModel,并且在切换回来时,它会迷失在:{/ p>

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {    

        return tableViewModel.count
    }

在我看来,fatal error: Index out of range告诉我们tableView中的行数与tableViewModel中的帖子数不匹配。这正是我们在numberOfRowsInSection中返回的内容。

非常感谢任何建议和最佳做法。另外,在我错的任何地方纠正我。