2

尝试做简单的按钮功能。

按钮 A。它有 3 种状态:默认、突出显示、选中。再次单击时应取消选择。对于我的生活,我什至无法建立一个简单的三态功能。

突出显示(按下时)显示为内置(变为“库存”蓝色)。我已经使用 Button Attributes 为选定状态加载图像...使用 Control/Content 来单击 Highlight 和 Selected on and off,试图找到正确的组合...

我认为它只是在下拉列表中选择我想要编辑的状态......它会注册我对该状态的编辑......图像加载/颜色改变/等等......

不!!!!我错过了什么..?

4

5 回答 5

1

你想做什么设置不同状态的图像或标题?为此,您可以使用诸如

-(void)setImage:(UIImage *)image forState:(UIControlState)state;

或者

-(void)setTitle:(NSString *)title forState:(UIControlState)state;

这就是你要问的。可能是我误解了你的问题,因为它不够清楚。

于 2009-07-23T19:01:59.320 回答
1

我在任何地方都找不到关于这个的直接答案。所以我酿造了自己的解决方案,似乎效果很好。

不要忘记在IB中连接您的按钮,您需要将两者都绑定 touch up insidesetButtonPressed

file ownerbutton1stButton


伪代码

  • 清除所有选择的按钮
  • 将发件人设置为选中

代码


//Declare your buttons in .h

UIButton *1stButton;
UIButton *2ndButton;
UIButton *3rdButton;

@property(nonatomic, retain) IBOutlet UIButton *1stButton;
@property(nonatomic, retain) IBOutlet UIButton *2ndButton;
@property(nonatomic, retain) IBOutlet UIButton *3rdButton;

//In .m file - write 2 methods 

-(void)clearButtons
{
    [1stButton setSelected:FALSE];
    [2ndButton setSelected:FALSE];
    [3rdButton setSelected:FALSE];
}

//attach to touch up inside event in IB for each button

-(void) setButtonPressed:(UIButton *)sender 
{
    self.clearButtons;
    [sender setSelected:TRUE];
    [sender setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
}
于 2010-08-17T09:38:16.947 回答
0

您确实应该发布一些代码(或 IB 屏幕截图),因为很难完全解析您所说的内容。

UIButton 的默认行为是在按下时显示 Selected 状态,然后恢复到正常状态。如果您希望它“锁定”按下,您需要在连接到 UIButton 的 IBAction 中执行以下操作:

BOOL pressed;
UIButton *button

- (IBAction) toggleButton:(id)sender
{
    button.selected = ! pressed;
    pressed = ! pressed;
}
于 2009-07-23T19:52:03.073 回答
0

啊!好吧,不是程序员,我希望在 Interface Builder 中有简单的“库存”解决方案。

要明确“想要/希望:

按钮 AE。每个按钮应该有 3 种状态:默认、突出显示、选中。默认值:静止状态。突出显示:使用界面构建器功能进行一些处理或导入将出现在突出显示上的图形。按下按钮时会出现此状态。已选中:当按钮 AE 被释放时,它通过显示新状态来表明它已被选中,再次通过在界面构建器中使用调整(字体颜色、阴影)或导入图形。当您再次单击 SELECTED 按钮时,它会返回默认状态。

我想我只是认为这很“简单”,因为 SDK 3.0 Interface Builder 有 3 个州的下拉菜单。我认为代码会“神奇地”分配给按钮,使其能够按照需要发挥作用以及它的美学转变。

我非常感谢任何和所有反馈。我可以将任何编码建议传递给此应用程序的合作伙伴。

于 2009-07-23T20:11:01.223 回答
0

尝试这个:

UIImage *img1 = [UIImage  imageNamed:@"image1.png"];
UIImage *img2 = [UIImage  imageNamed:@"image2.png"];
UIImage *img3 = [UIImage  imageNamed:@"image3.png"];

[button setImage:img1 forState:UIControlStateNormal];
[button setImage:img2 forState:UIControlStateHighlighted];
[button setImage:img3 forState:UIControlStateSelected];
[button setImage:img2 forState:(UIControlStateHighlighted+UIControlStateSelected)];

[img1 release];
[img2 release];
[img3 release];

这是因为状态变量实际上是一个位标志。

于 2010-10-18T03:07:05.760 回答