我想知道如何自动刷新tableview而不必下拉刷新。所以我尝试设置NSTimer
并调用具有reloadData()
的函数。但那没用。换句话说,我做了:
@IBOutlet weak var allPrayerRequestsTableView: UITableView!
var timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "update", userInfo: nil, repeats: true)
func update() {
allPrayerRequestsTableView.reloadData()
}
但是这没用。有人知道如何每隔几秒自动刷新一次tableview吗?
答案 0 :(得分:3)
我认为简单地使用allPrayerRequestsTableView.reloadData()
不会真正更新或刷新您的表格视图。您需要更新表视图的数据源,然后再执行reloadData()
方法。
试试这个:
func update() {
/**
ADD THE CODE TO UPDATE THE DATA SOURCE
**/
allPrayerRequestsTableView.reloadData()
}
答案 1 :(得分:0)
您的更新是否被调用?如果没有,可能的原因:通常你的应用程序运行在NSDefaultRunLoopMode模式,当你滚动你的tableview时,runloop将其模式切换到UITrackingRunLoopMode,在该时间点被拒绝,当你停止时,runloop返回到默认模式。
所以我的建议是将你的计时器添加到runloop模式kCFRunLoopCommonModes并检查它是否有效。
let timer = NSTimer(timeInterval: 0.4, target: self, selector: "update:", userInfo: nil, repeats: true)
NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
答案 2 :(得分:0)
制作一个一次又一次调用自己的更新方法,然后在ViewDidLoad中调用一次。例如:
-(void)reloadMethod{
[self.allPrayerRequestsTableView reloadData];
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 4.0 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self reloadMethod];
});
}
这将每4秒更新一次表格视图。