我正在获取毫秒,我想将该毫秒转换为天、小时、分钟、秒并显示,并希望在 uiTableview 中显示它。我想每秒更新一次计时器..
我使用 uiTableview 委托(delegate)方法 cellForRowAtIndexPath
尝试了此代码。
NSInteger totleTime = [[[productListDataArray objectAtIndex:indexPath.row]objectForKey:@"_auction_duration"] integerValue];
totleTime = totleTime - timerValue ;
long days = (totleTime) / (60 * 60 * 24);
long hours = (totleTime - days * 60 * 60 * 24) / (60 * 60);
long minuts = (totleTime - days * 60 * 60 * 24 - hours * 60 * 60) / 60;
long seconds = (totleTime - days * 60 * 60 * 24 - hours * 60 *60 - minuts * 60);
NSLog(@"seconds : %.f minutes : %.f hours : %.f days : %.f ", seconds, minuts, hours, days);
我已使用此方法来调用方法和更新 TableView 。但它不起作用,所以建议我另一个选择,或者告诉我我在这段代码中做错了什么。
最佳答案
我从你的问题中了解到你想每秒重新加载你的tableView。首先,我要说这是一个坏主意。如果您的 tableView 正在重新加载,那么用户将看不到任何内容。话虽如此,您可以使用具有一定间隔的计时器来调用方法。该方法可以决定何时重新加载 tableView。
编辑
根据您的上一条评论,我了解到您正在尝试在表格 View 单元格中显示倒计时器。为此,您不需要重新加载表格 View 。您只需更新数据源并重新加载显示计数器的行。沿着这些思路。
下面的代码片段是 Swift 2 中的
//Call a method named tick() every second
let timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(tick), userInfo: nil, repeats: true)
func tick() {
//DO YOUR CALCULATIONS HERE TO CALCULATE YOUR DAYS, MINUTES, etc. THEN CALL THE FOLLOWING METHOD
tblView.reloadRowsAtIndexPaths([NSIndexPath(forRow: {rowNumber}, inSection: {sectionNumber})], withRowAnimation: .None)
//ALSO MAKE SURE YOUR cellForRowAtIndexPath IS CORRECTLY SETTING THE CELL VALUES
}
使用完毕后,不要忘记使其无效
计时器
关于uitableview - 如何在uitableview中使用计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43513456/