我已经在Xcode中设置了一种相当简单的方法来应用五星评级,它在技术上是可行的,但有一种我不喜欢并想改变的行为。我从Xcode中的一个无线电组开始,为打开和关闭状态设置自定义图像,然后为每个状态的选择器操作应用IBAction。例如,第三颗星(无线电)链接到以下动作:
-(IBAction) star3Press: (id) sender
{
[star1 setState:1];
[star2 setState:1];
[star3 setState:1];
[star4 setState:0];
[star5 setState:0];
}
这是第一次完美地工作,但如果我试图进入星星,我点击的星星也会关闭。例如,如果我点击5号星,所有5号星都会亮起。如果我点击星号3,星号3、星号4和星号5将关闭。如果我再次点击3,它将重新打开。我更喜欢在所有5颗星都打开的情况下点击星号3只关闭星号4和5。我想问题是因为当我点击一颗星时,首先调用我的IBAction,然后它注册了关闭单选按钮的命令。有办法改变这种行为吗?
您是否考虑过使用NSLevelIndicator
?这就是iTunes用来控制星级的原因。明星形象是内置的,如果你不喜欢,你可以设置自己的形象。不需要自己建造。
无论您将控件设置为具有什么操作,都可以查询其当前级别的指示符:
- (IBAction) myLevelIndicatorAction:(id)sender {
NSInteger currentLevel = [sender integerValue];