自动刷新tableview无需拉动刷新

时间:2015-09-11 07:46:35

标签: ios xcode swift uitableview

我想知道如何自动刷新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吗?

3 个答案:

答案 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秒更新一次表格视图。