Iphone 管理多个按下的按钮
我有一个uiviewcontroller,它有许多UIButton,可以选择并一直按下,直到再次按下为止。我在viewDidLoad中定义每个按钮,并为它们提供相同的选择器方法(tapButton): 我想做的是,在tabButton:method中,使用选择器确定按下了哪个按钮,然后使用以下命令更改其状态:Iphone 管理多个按下的按钮,iphone,objective-c,ios,xcode,uibutton,Iphone,Objective C,Ios,Xcode,Uibutton,我有一个uiviewcontroller,它有许多UIButton,可以选择并一直按下,直到再次按下为止。我在viewDidLoad中定义每个按钮,并为它们提供相同的选择器方法(tapButton): 我想做的是,在tabButton:method中,使用选择器确定按下了哪个按钮,然后使用以下命令更改其状态: - (IBAction) tapButton:(id)sender { if ( sender.selected ) { sender.highlighted = NO;
- (IBAction) tapButton:(id)sender
{
if ( sender.selected ) {
sender.highlighted = NO;
sender.selected = NO;
} else {
sender.highlighted = YES;
sender.selected = YES;
}
}
您会注意到,这只是一个伪代码,因为我不能真正执行“sender.selected”或“sender.highlighted”,但这正是我试图实现的
我有什么办法可以做到这一点吗?我不想创建30个“tapButton”方法(这是我拥有的UIButton的数量,是的…)来管理每个UIButton的状态
非常感谢 您可以像这样设置每个按钮的
标签
button1.tag = 1;
button2.tag = 2;
....
然后在你的选择器中
- (IBAction) tapButton:(id)sender
{
switch((UIButton*)sender.tag){
case 1:
.....
}
}
上面的代码将帮助您。这里我使用新按钮来存储最后一个按钮状态您可以使用开关盒来实现此功能…或者您也可以使用alpha属性来实现此功能
-(IBAction) tapButton:(id)sender
{
UIButton *btn = (UIButton *)sender;
if ([btn isSelected])
{
btn.selected = NO;
btn.alpha = 0.5;
} else {
btn.selected = YES;
btn.alpha = 1;
}
}
为什么不能执行
sender.selected
或sender.highlighted
??它们是有效的…这正是发件人参数的目的(它是按下的按钮),我希望我可以这样做,但我得到了错误…这会让我的生活变得更轻松!“错误”…非常能描述你。也许你的问题应该是关于这些错误?我一直以这种方式切换选择。不,唯一可以自动更改的是标题、标题字体颜色、标题字体阴影颜色、图像和背景图像。其他任何操作都必须手动完成。您是否已经尝试了以下操作:好主意,我喜欢它,但希望找到更“优雅”的东西…+1。继续查找,如果您得到它,请让我知道:)此代码没有意义。您应该删除第一行,并在第二行使用self.selectedButton.highlighted=NO
。
UIButton * selectedButton = [[UIButton allo]init];
/*for removing old highlight*/
selectedButton.higlighted = NO;
selectedButton = sender;
/*for setting new button highlight*/ sender.selected = YES
-(IBAction) tapButton:(id)sender
{
UIButton *btn = (UIButton *)sender;
if ([btn isSelected])
{
btn.selected = NO;
btn.alpha = 0.5;
} else {
btn.selected = YES;
btn.alpha = 1;
}
}