【问题标题】:Changing UIButton text after reload data重新加载数据后更改 UIButton 文本
【发布时间】:2019-10-11 13:53:52
【问题描述】:

我在UICollectionView 中有一个UIButton,我想更改它的文本。但是有一个问题,点击后collectionView会重新加载它的数据,所以文本会改变一秒钟然后又回到第一个。

代码:

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

感谢您提前提供帮助

【问题讨论】:

  • 您必须保持状态以更改标题,这意味着在视图控制器(或父级)中使用一个属性(变量),并且根据状态,您可以为按钮分配值。
  • 我不知道为什么这里是0Button!键入而不是 UIButton?

标签: ios swift uitableview uicollectionview uibutton


【解决方案1】:

首先,声明一个变量来存储按钮状态并根据该状态更改按钮标题

var isShowMore = false

func onButtonTapped(){
    isShowMore = !isShowMore

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

    collectionView.reloadData()
}

【讨论】:

    【解决方案2】:

    您已将 button 的新标题设置为 .selected 状态,而不是 .highlighted

    UiButton 仅在您单击UiButton 时处于.highlighted 状态,然后在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)
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-03-19
      • 2020-10-26
      • 2020-10-03
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多