【发布时间】:2015-03-24 19:04:24
【问题描述】:
我的应用中有一个 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
})
}
}
【问题讨论】:
-
你有没有试过去掉uirefreshcontrol,测试一下问题是否依然存在?您的视图层次结构如何?您的视图控制器视图中是否有其他子视图位于表格视图下方?
-
tableview 下方没有其他视图,只有导航栏和 tableview 以及 tableview 单元格。除了刷新控件之外,它们都在情节提要中进行了配置。我将删除刷新控件并查看问题是否仍然存在,但调试起来相当困难,因为此问题很少发生。
-
哦,等等,那行“tableView.insertSubview”...我在开始使用 UITableViewController 之前就有了,并且读到 UIRefreshControl 不应该像在普通 UITableViews 中那样使用。在这种情况下肯定不需要,这可能是问题吗?
标签: ios uitableview cocoa-touch uirefreshcontrol