目标c-帮助简单的五星评级控制



我已经在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];

最新更新