答案 0 :(得分:0)
您不能将刷新控件添加到堆栈视图中以刷新内容。
这里的重要是您必须将刷新控件添加到滚动视图中,以使其按预期运行:>
UIRefreshControl
一个标准控件,可以启动滚动视图的刷新 内容。
在这种情况下,我建议您将网格设为UICollectionView
而不是堆栈视图。
此外,如果您尝试向网格中添加另一个按钮怎么办?容器视图应该是可滚动的,这意味着集合视图将更易于维护。
此外,您也许可以利用UICollectionViewController的影响力。检查以下内容可能会有用:
答案 1 :(得分:0)
您最好的选择是使用UICollectionView
。创建一个满足您所需需求的自定义单元。之后,您可以添加刷新控制器:
// Global variable
let pullToRefreshData = UIRefreshControl()
// Where you initialise the collectionView (eg. viewDidAppear())
collectionView.refreshControl = pullToRefreshData
pullToRefreshData.addTarget(self, action: #selector(refreshData), for: .valueChanged)
// This will be called when you pull from top of the collectionView
@objc func refreshData() {
// Maybe you need to call a server API, stop the reloading animation when you have the data
pullToRefreshData.endRefreshing()
// Refresh the data from the collectionView
collectionView.reloadData()
}
如果只需要使用实现,则可以提供上下文。
答案 2 :(得分:0)
对于这个用例,我建议使用UICollectionView
,它内置了对UIRefreshControl
的支持。但是,如果您的按钮有所不同,或者您想要一个更简单,更不可靠的解决方案,则可以将UIStackView
嵌入UIScrollView
中并将其设置为refreshControl
。
请参阅:https://developer.apple.com/documentation/uikit/uiscrollview/2127691-refreshcontrol