我有一个令人抓狂的问题。我有一个带4个按钮的评级控件。
它们在循环中都是这样初始化的:
var button: UIButton? = nil;
//..
button = UIButton(type: UIButtonType.System);
//..
imageDefault.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);
mageHighlight.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);
imageProgress.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);
//..
button!.setImage(imageDefault.Content!, forState: .Normal)
button!.setImage(imageHighlight.Content!, forState: .Highlighted)
button!.setImage(imageProgress.Content!, forState: .Selected)
当点击其中一个按钮时,乐趣就开始了。如果是点击第二个,第一个应该是相同的颜色,而其余的看起来像标准。有3个按钮,相同的概念,但另一种颜色。
当点击发生时,我的代码如下:
func updateButtonSelectionStates() {
let idx: Int = self.tag;
var rating: Int = 3; // whatever
for (index, button) in ratingButtons.enumerate() {
button.selected = (index+1) <= Int(rating);
var color: UIColor = UIColor.blackColor();
if (index+1) <= Int(rating) {
switch (rating % 4) {
case 0: color = UIColor.blueColor();
case 3: color = UIColor.greenColor();
case 2: color = UIColor.yellowColor();
case 1: color = UIColor.redColor();
default: msNoOp();
}
}
if (button.imageView != nil) {
button.imageView!.tintColor = color;
}
}
问题是 - 任何设置为“已选择”的按钮都会消失 - 不会显示图形。
如果我明确设置“selected”= false,它适用于大多数按钮,但是....此解决方案不适用于单击的实际按钮。它仍然显得隐藏/图形不可见。
无论出现什么解决方案,它都应该在iOS7上运行......