我有一台带有一个segmentedControl的vc,我希望每次更改segmentedControl的索引时都可以更改刷新器调用的功能
lazy var refresher: UIRefreshControl = {
let refreshControl = UIRefreshControl()
if (segmentedControl.selectedSegmentIndex == 0){
refreshControl.addTarget(self, action: #selector(loadRecommend1), for: .valueChanged)
} else if (segmentedControl.selectedSegmentIndex == 1){
refreshControl.addTarget(self, action: #selector(loadCompletePosts1), for: .valueChanged)
} else if (segmentedControl.selectedSegmentIndex == 2){
refreshControl.addTarget(self, action: #selector(loadCompletePostsByHealthy1), for: .valueChanged)
}
return refreshControl
}()
当前,尽管segmentedControl中已选择了项,但每次都会调用第一个函数
最佳答案
此lazy var
仅在创建此实例时调用一次,而不是在更改段索引时调用,因此您可以在1个选择器方法内更改该目标选择器,或者只有一个根据当前段索引执行方法的选择器,例如
refreshControl.addTarget(self, action: #selector(allCalls), for: .valueChanged)
@objc func allCalls(_ sender:UIRefreshControl) {
if (segmentedControl.selectedSegmentIndex == 0){
loadRecommend1()
} else if (segmentedControl.selectedSegmentIndex == 1){
loadCompletePosts1()
} else if (segmentedControl.selectedSegmentIndex == 2){
loadCompletePostsByHealthy1()
}
}
关于ios - 如何根据segmentedControl的选定索引更改刷新器的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63204281/