У меня есть UITableViewController в моем приложении с добавленным к нему UIRefreshControl. Однако иногда (я не уверен, как воспроизвести это, это случается время от времени) я получаю дополнительные пробелы в верхней части табличного представления, а элемент управления обновлением смещается даже ниже этого.
Вот как это выглядит (слева бездействует, справа вытягивается):
Я понятия не имею, что может быть причиной этого. В моем viewdidload я только создаю экземпляр элемента управления обновлением и вызываю функцию обновления, которая устанавливает атрибутированный заголовок. Я переместил добавление элемента управления обновлением в представление таблицы в viewDidAppear, как я читал в другом месте. Вот как выглядит этот код:
override func viewDidLoad() {
super.viewDidLoad()
self.refreshControl = UIRefreshControl()
updateData()
}
override func viewDidAppear(animated: Bool) {
refreshControl!.addTarget(self, action: "updateData", forControlEvents: UIControlEvents.ValueChanged)
tableView.insertSubview(self.refreshControl!, atIndex: 0)
}
func updateData() {
//...
ServerController.sendParkinglotDataRequest() {
(sections, plotList, updateError) in
//...
// Reload the tableView on the main thread, otherwise it will only update once the user interacts with it
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
// Update the displayed "Last update: " time in the UIRefreshControl
let formatter = NSDateFormatter()
formatter.dateFormat = "dd.MM. HH:mm"
let updateString = NSLocalizedString("LAST_UPDATE", comment: "Last update:")
let title = "\(updateString) \(formatter.stringFromDate(NSDate()))"
let attributedTitle = NSAttributedString(string: title, attributes: nil)
self.refreshControl!.attributedTitle = attributedTitle
})
}
}