我要重新提出这个问题,因为我的最后一个实际上并没有被标记为重复!这是同样的问题,但是解决方案不适用于我的代码。我使用的是Swift 2。

所以我的问题是,正如标题所说:我在tableViewCell中有一个UIButton,当我使用«setTitle»方法时,更新标题需要10到60秒。同时,我使用的是«addTarget»,它可以立即运行。因此标题也应更新。我的故事板中的按钮设置为“自定义”。

当视图加载时,我正在运行以下代码:

/ * viewDidLoad * /

override func viewDidLoad() {
    super.viewDidLoad()
    boolAlready = false
    findParticipation()
}

/ * findParticipation * /
func findParticipation() {
    // After server request response :
    boolAlready = true
    self.tableView.reloadData()
}

/ * cellForRowAtIndexPath * /
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellActions = tableView.dequeueReusableCellWithIdentifier(informationsCellArray[indexPath.row], forIndexPath: indexPath) as     ! eventDetailsAction

    if boolAlready {
         cellActions.foundParticipation
    } else {

        cellActions.btnParticipate.setTitle("...", forState: UIControlState.Normal)
        cellActions.btnParticipate.addTarget(self, action: « deleteParticion", forControlEvents: .TouchUpInside)
}

/ *在我的自定义单元格中* /
func foundParticipation () {
    self.btnParticipate.setTitle("Annuler", forState: UIControlState.Normal)
    self.btnParticipate.addTarget(self, action: "deleteParticipation", forControlEvents: .TouchUpInside)
}

我在无效的论坛上发现了不同的结果:
  • 将我的settitle操作放到周围dispatch_async(dispatch_get_main_queue()) {}
  • 为所有不同的UIControlStates设置标题
  • 使用setAttributedTitle()
  • 在setTitle
  • 之后使用self.btnParticipate.setNeedsLayout()self.btnParticipate.layoutIfNeeded()
  • 在setTitle
  • 之前禁用该按钮,在其之后启用它
  • self.addSubview(self.btnParticipate)
  • 更改titleLabel.text中的标题
  • 使用cellActions.btnParticipate
  • 执行之前在父viewController中所做的所有操作
  • UIView.performWithoutAnimation { self.btnParticipate.setTitle("Annuler", forState: .Normal)}

  • 我现在陷入困境,无法为此找到解决方案。

    最佳答案

    尝试将setTitle调用包装为performWithoutAnimation:

    UIView.performWithoutAnimation {
        self.btnParticipate.setTitle("Annuler", forState: .Normal)
    }
    

    关于ios - UIButton | setTitle即使在主线程中也要花费大量时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36792976/

    10-10 08:24