Изменение текста UIButton после перезагрузки данных - PullRequest
0 голосов
/ 25 мая 2019

У меня есть UIButton в UICollectionView, я хочу изменить его текст. Но есть проблема, после нажатия на нее collectionView перезагружает свои данные, поэтому текст меняется на секунду, а затем возвращается к первому.

Код:

 @IBOutlet weak var showMorebtn: OButton!
 @IBAction func pressShowMoreBtn(_ sender: OButton) {
    askForChangingheightOfCell?()
    showMorebtn.setTitle("Show more", for: .normal)
    showMorebtn.setTitle("Show less", for: .highlighted)

Буду признателен за вашу помощь заранее

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Вы установили новый заголовок для button в состоянии .selected вместо .highlighted

UiButton только в состоянии .highlighted, когда вы нажали UiButton, а затем touchEnds верните его в состояние .normal, затем вы должны определить свой код title для .selected

например

@IBOutlet weak var showMorebtn: OButton!

@IBAction func pressShowMoreBtn(_ sender: OButton) 
 {
    askForChangingheightOfCell?()
    showMorebtn.setTitle("Show more", for: .normal)
    showMorebtn.setTitle("Show less", for: .selected)
 }
0 голосов
/ 25 мая 2019

Прежде всего, объявите переменную для сохранения состояния кнопки и на основании этого состояния измените заголовок кнопки

var isShowMore = false

func onButtonTapped(){
    isShowMore = !isShowMore

    if isShowMore{
        showMorebtn.setTitle("Show less", for: .highlighted)
    }else{
        showMorebtn.setTitle("Show more", for: .normal)
    }

    collectionView.reloadData()
}
...