【问题标题】:iPhone app: SDK 3.0 : Button Selected State: Can't get working!iPhone 应用程序:SDK 3.0:按钮选定状态:无法正常工作!
【发布时间】:2009-07-23 18:48:32
【问题描述】:
尝试做简单的按钮功能。
按钮 A。它有 3 种状态:默认、突出显示、选中。再次单击时应取消选择。
在我的一生中,我什至无法建立一个简单的三态功能。
突出显示(印刷时)显示为内置(转到“库存”蓝色)。
我已经使用 Button Attributes 为选定状态加载图像...使用 Control/Content 来单击 Highlight 和 Selected on and off,试图找到正确的组合...
我认为它只是在下拉列表中选择我想要编辑的状态......它会注册我对该状态的编辑......图像加载/颜色更改/等等......
不!!!!
我错过了什么..?
【问题讨论】:
标签:
iphone
configuration
button
state
selected
【解决方案1】:
你想为不同的状态设置图像或标题是什么?为此,您可以使用诸如
之类的方法
-(void)setImage:(UIImage *)image forState:(UIControlState)state;
或
-(void)setTitle:(NSString *)title forState:(UIControlState)state;
这就是你要问的。可能是我误解了你的问题,因为它不够清楚。
【解决方案2】:
我在任何地方都找不到直接的答案。所以我自己酿造了似乎效果很好的解决方案。
别忘了在 IB 中连接你需要的按钮
绑定两者
touch up inside 到 setButtonPressed
file owner 到 button 前。 1stButton
伪代码
代码
//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];
}
【解决方案3】:
您确实应该发布一些代码(或 IB 屏幕截图),因为很难完全解析您所说的内容。
UIButton 的默认行为是在按下时显示 Selected 状态,然后恢复到正常状态。如果您希望它“锁定”按下,您需要在连接到 UIButton 的 IBAction 中执行类似的操作:
BOOL pressed;
UIButton *button
- (IBAction) toggleButton:(id)sender
{
button.selected = ! pressed;
pressed = ! pressed;
}
【解决方案4】:
啊!好吧,不是程序员,我希望在 Interface Builder 中提供简单的“库存”解决方案。
要明确“想要/愿望:
按钮 A-E。每个按钮应该有 3 种状态:默认、突出显示、选中。
默认值:静止状态。
突出显示:使用界面构建器功能进行一些处理或导入将出现在突出显示上的图形。按下按钮时会出现此状态。
已选中:当按钮 A-E 被释放时,通过显示新状态,再次通过在界面构建器中使用调整(字体颜色、阴影)或导入图形来表明它已被选中。当您再次单击 SELECTED 按钮时,它会返回到默认状态。
我想我只是认为这很“简单”,因为 SDK 3.0 Interface Builder 具有 3 种状态的下拉菜单。我认为代码会“神奇地”分配给按钮,使其能够随心所欲地发挥作用,同时具有美学转变。
我非常感谢任何和所有反馈。我可以将任何编码建议传递给此应用程序的合作伙伴。
【解决方案5】:
试试这个:
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];
这是因为状态变量实际上是一个位标志。