Как изменить функцию обновления на основе выбранного индекса segmentedControl - PullRequest
1 голос
/ 01 августа 2020

У меня av c с одним segmentedControl, я хочу иметь возможность изменять функцию, вызываемую обновлением каждый раз, когда изменяется индекс 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

1 Ответ

1 голос
/ 01 августа 2020

Этот lazy var вызывается только один раз при создании этого экземпляра, а не при изменении индекса сегмента, поэтому вы либо изменяете этот целевой селектор внутри метода селектора 1, либо имеете только 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() 
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...