2011-06-05 52 views
1

我已经设置了一个相当简单的方法来应用Xcode中的5星评级,它的技术上工作,但有一个我不喜欢并想改变的行为。我从Xcode的一个广播组开始,为开启和关闭状态设置自定义图像,然后为每个选择器动作应用一个IBAction。例如,第三个星(无线电)链接到以下行动:帮助一个简单的5星评级控制

-(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,则会再次打开。我更喜欢它,如果点击星号3时,所有5星都只关闭了星号4和星号5.我假设问题是因为当我点击星号时,我的IBAction首先被调用,然后注册命令关闭该单选按钮。有没有办法改变这种行为?

+0

你肯定的是,当你点击星3,'star3Press'被调用,而不是'star2Press'(我假设这将是该名称)? – Saphrosit 2011-06-05 21:59:16

回答

4

你有没有想过使用NSLevelIndicator?这就是iTunes用于星级控制的原因。星图是内置的,如果你不喜欢,你可以设置自己的图像。不需要建立你自己的。

任何行动你调节到具有可查询指标的当前水平:

- (IBAction) myLevelIndicatorAction:(id)sender { 
    NSInteger currentLevel = [sender integerValue]; 
+0

这正是我正在寻找的...并且更容易设置。感谢您的正确方向! – Kris 2011-06-07 05:06:22