- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我重新打开这个问题,因为我的最后一个被标记为重复,即使它实际上不是!这是同样的问题,但解决方案不适用于我的代码。我正在使用 swift 2。
所以我的问题是,正如标题所说:我在 tableViewCell 中有一个 UIButton,当我使用方法 « setTitle » 时,更新标题需要 10 到 60 秒。同时,我正在使用 « addTarget »,它立即生效。所以标题也应该更新。我的按钮在 Storyboard中设置为“自定义”。
加载 View 时,我正在运行以下代码:
/* viewDidLoad */
override func viewDidLoad() {
super.viewDidLoad()
boolAlready = false
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 Action dispatch_async(dispatch_get_main_queue()) {}
为所有不同的 UIControlStates 设置标题
使用setAttributedTitle()
在 setTitle 之后使用 self.btnParticipate.setNeedsLayout()
和 self.btnParticipate.layoutIfNeeded()
在 setTitle 之前禁用按钮并在 setTitle 之后启用它
self.addSubview(self.btnParticipate)
更改 titleLabel.text
使用 cellActions.btnParticipate
UIView.performWithoutAnimation {
self.btnParticipate.setTitle("Annuler", forState: .Normal)
}
我现在被困住了,找不到解决方案。
最佳答案
你可以尝试引用这个答案https://stackoverflow.com/a/29633647/4478037
确保您的按钮是“自定义”按钮而不是“系统”按钮。
关于ios - 用户界面按钮 |即使在主线程中,setTitle 也会花费大量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36792976/
我是一名优秀的程序员,十分优秀!