私はその一連のUITableViewCells
更新を毎秒程度行っています。
最初の試行: このような更新を実行するために、self.tableView.reloadData()
すべてのセルの内容を再読み込みするように呼び出します。
2 回目の試行: でセクションを更新しようとしましたUITableViewAnimation.None
が、セクション ヘッダーが消えてから、毎秒再表示されます。
最初の試行では、ビューが常に更新されるため、「ちらつき」効果が発生します。ちらつき効果がなくなるようにしたい。2 回目の試行では、前述のように、セクション ヘッダーが消えてから、1 秒ごとに再表示されます。
私のコードでは、headerView.headerTimeLeft.text
ラベルを常に更新したいと考えています。
これが私の試みです:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.refreshTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "refreshView:", userInfo: nil, repeats: true)
}
func refreshView(timer: NSTimer){
//Attempt 2
var visibleRows:NSArray = self.tableView.indexPathsForVisibleRows()!
var sections = NSMutableIndexSet()
for indexPath in visibleRows{
sections.addIndex(indexPath.section)
}
//Attempt 1 was simply to reload the Data
//self.tableView.reloadData()
//Attempt 2 was to reload the sections
self.tableView.reloadSections(sections, withRowAnimation: UITableViewRowAnimation.None)
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
//Show section header cell with name of event creator
var cellIdentifier = "SectionHeaderCell"
var headerView = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! SectionHeaderCell
headerView.backgroundColor = UIColor.whiteColor()
headerView.creator.text = self.events[section].eventCreator()
var fromDate = self.events[section].fromDate()! + " " + self.events[section].fromTime()!
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM/dd/yy hh:mm a z"
var eventStartDate = dateFormatter.dateFromString(fromDate)?.timeIntervalSince1970
var timeUntilEnd = eventStartDate! - NSDate().timeIntervalSince1970
//Display the time left
var seconds = timeUntilEnd % 60
var minutes = (timeUntilEnd / 60) % 60
var hours = timeUntilEnd / 3600
headerView.headerTimeLeft.text = NSString(format: "%dh %dm %ds", Int(hours), Int(minutes), Int(seconds)) as String
return headerView
}