我在UIViewController
内有一个表格视图。我在tableView上实现了UIRefreshControl
。如果我在刷新控制器轮旋转时向上拖动桌子,则第一个标头会卡在桌子的中间。我无法弄清楚出了什么问题......
以下是问题的屏幕截图:
以下是我在viewDidLoad
中使用的代码:
refreshControl = UIRefreshControl()
refreshControl.tintColor = UIColor.redColor()
refreshControl.addTarget(self, action: "handleRefresh:", forControlEvents: UIControlEvents.ValueChanged)
tableView.insertSubview(refreshControl, atIndex: 0)
tableView.sendSubviewToBack(refreshControl)
这就是我创建标题的方式:
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let header: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView //recast view as a UITableViewHeaderFooterView
header.contentView.backgroundColor = UIColor(red: 59/255, green: 134/255, blue: 134/255, alpha: 1.0) //make the background color light blue
header.textLabel.textColor = UIColor.whiteColor() //make the text white
header.alpha = 0.5 //make the header transparent
}
非常感谢!
答案 0 :(得分:1)
您在此处插入了刷新控件:
tableView.insertSubview(refreshControl, atIndex: 0)
你应该做什么/做什么:
self.tableView.addSubview(self.refreshControl)
此外,您需要编写HandleRefresh和触发器
的代码refreshControl.endRefreshing()
在方法结束时。编写代码的方式意味着您已将控件添加到表的特定部分...
另一种方法是在StoryBoard中启用刷新控制。注意不要同时添加它们 - 即启用它并在代码中自己创建它。
您可以看到两个示例here
答案 1 :(得分:0)
使用tableView.addSubview(refreshControl)
应该可以正常工作并且行为正确。检查您的故事板,如果您没有导航栏,则禁用"扩展到顶部X"选项,如果您确实已启用它们。
如果全部失败,您是如何创建标题视图的?如果他们被创建&像表中的常规单元格一样返回,如
let headerCell = tableview.dequeueReusableCellWithIdentifier("HeaderCell") as! UITableViewCell
尝试在返回它们之前将它们包装在UIView中
let view : UIView = UIView(frame: headerCell.view.frame)
view.addSubview(headerCell.view)
return view
有时,当表视图将这些标题视为常规表格单元格时会出现此问题,并且抱怨缺少索引路径,因为它们会破坏布局。