如何在iOS 11中向集合视图大标题导航栏添加刷新控件?

fun*_*len 13 ios uirefreshcontrol pull-to-refresh ios11

根据Apple的说法,刷新控件应该是iOS 11中大标题导航栏的一部分.

当我在故事板中为UITableViewController启用刷新控件时,刷新控件是导航栏的一部分(在拉动刷新时).

使用大标题刷新控件

我不能在故事板中为所有其他视图(如UICollectionViewController)执行此操作.当我在代码中添加刷新控件作为子视图时,它不是导航栏的一部分:

refreshControl = UIRefreshControl()
collectionView?.addSubview(refreshControl)
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

看起来像这样

如何在我的自定义滚动视图(如UICollectionViewController)中添加刷新控件,以便在使用大标题时导航栏中显示刷新控件?

Mar*_*tin 53

从iOS 10开始,UITableViewUICollectionView拥有refreshControl属性.

所以,而不是:

tableView.addSubview(refreshControl)

你做:

tableView.refreshControl = refreshControl

这应该适用于iOS 11中的新大标题.

  • 请注意,仅当表视图控制器设置为在导航栏后面向上扩展时,这才能正常工作.我的桌面视图没有延伸到导航栏的后面并且弄得一团糟. (5认同)
  • 值得注意的是`refreshControl`属性实际上是`UIScrollView`,它是`UITableView`和`UICollectionView`的超类. (4认同)
  • 我无法使其与具有全屏tableView的常规UIViewController一起使用(与UITableViewController没什么区别,只是可控性更高)。刷新控件刚刚显示出来。我必须在表后面添加一个空视图,这样我才能恢复旧功能。 (2认同)