【发布时间】:2018-02-05 19:55:55
【问题描述】:
我正在尝试制作一个弹出窗口,要求用户对项目进行评分。 但是当我点击其中一个按钮时,图像不会改变,直到我按下另一个按钮。
let selectedStar = UIImage(named:"004-star-selected.png")
let star = UIImage(named: "001-star.png")
@IBAction func rating(_ sender: UIButton) {
DispatchQueue.main.async {
let tag = sender.tag
for i in 10...14{
let view = self.view.viewWithTag(i) as! UIButton
if i <= tag{
view.setImage(self.selectedStar, for: UIControlState.normal)
}else{
view.setImage(self.star, for: .normal)
}
}
}
}
【问题讨论】:
-
DispatchQueue.main.async的使用在这里毫无意义。 -
谢谢,但还是不行
-
有可能按钮的
UIControlState不是.normal,直到按下不同的按钮,它可能处于.highlighted或.selected状态。尝试在您的view.state上打印语句以查看发生了什么。您是否使用TouchUpInside作为情节提要中的IBAction设置?您可能会在单击不同按钮后看到它,因为在“选择”不同按钮后它会返回到.normal。您仅为 .normal 控制状态设置图像。