我有一个 UITableView,其中包含多行帖子,这些帖子根据它们进入我的数据库的时间进行了时间戳记。我想让每个单元格的帖子(行)在经过一定时间后自动删除。目前这就是我为实现这个目标所做的:
func deletePost(timer: Timer) {
for post in posts {
let startTime = Date(timeIntervalSince1970: TimeInterval(post.time))
let date = Date()
let endTime = startTime + 25
let call = Calendar.current
let componentsCurrent = call.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date)
var components = DateComponents()
components.hour = componentsCurrent.hour
components.minute = componentsCurrent.minute
components.second = componentsCurrent.second
components.year = componentsCurrent.year
components.month = componentsCurrent.month
components.day = componentsCurrent.day
let currentTime = call.date(from: components)!
print(currentTime)
print(" 2" , endTime)
if currentTime.timeIntervalSince1970 == endTime.timeIntervalSince1970 {
timer.invalidate()
print("ENDDDDD")
posts.removeLast()
tableView.reloadData()
}
}
}
我看到的问题是当前日期只记录一次日期但不会继续更新。我查看了有关计时器的其他帖子,并且我已经实现了它们,但是它在这种情况下不起作用。我假设一旦我能让这些变量等于其他代码就会很简单。
最佳答案
cellForRowAt
不是任何此类逻辑的地方。它的唯一目的是提供请求的单元格。就这样。
你想要的是设置一个计时器,比如每分钟一次(或其他一些合适的时间跨度)。当计时器关闭时,扫描您的数据源以查找应删除的行。从数据源中删除适当的值,并使用 deleteRows
相应地更新 TableView ,传入与删除的条目相对应的 IndexPath
数组。
关于swift - 自动删除 UITableView 中的行 : Swift3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45667707/