我要重新提出这个问题,因为我的最后一个实际上并没有被标记为重复!这是同样的问题,但是解决方案不适用于我的代码。我使用的是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)
}
我在无效的论坛上发现了不同的结果:
dispatch_async(dispatch_get_main_queue()) {}
setAttributedTitle()
self.btnParticipate.setNeedsLayout()
和self.btnParticipate.layoutIfNeeded()
self.addSubview(self.btnParticipate)
titleLabel.text
中的标题cellActions.btnParticipate
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/