Ios 以编程方式更改n个按钮的按钮文本颜色,而不更改其他按钮的文本颜色
我在scrollView中有n个按钮。如果单击某个按钮,其文本颜色将发生变化,但如果单击另一个按钮,则上一个按钮的文本颜色将保持不变。我想在单击另一个按钮时将上一个按钮的文本颜色更改为默认颜色。该行为就像一个分段控件。关于这一点,请帮助我,我在下面提供了我的代码:Ios 以编程方式更改n个按钮的按钮文本颜色,而不更改其他按钮的文本颜色,ios,objective-c,uibutton,tags,textcolor,Ios,Objective C,Uibutton,Tags,Textcolor,我在scrollView中有n个按钮。如果单击某个按钮,其文本颜色将发生变化,但如果单击另一个按钮,则上一个按钮的文本颜色将保持不变。我想在单击另一个按钮时将上一个按钮的文本颜色更改为默认颜色。该行为就像一个分段控件。关于这一点,请帮助我,我在下面提供了我的代码: -(void) loadScrollView:(CGRect)scrollViewFrame withButtonArray:(NSArray*)buttonArray withCase: (int)ButtonCase {
-(void) loadScrollView:(CGRect)scrollViewFrame withButtonArray:(NSArray*)buttonArray withCase: (int)ButtonCase
{
scrollView=[[UIScrollView alloc]initWithFrame:scrollViewFrame];
[scrollView setScrollEnabled:YES];
[scrollView setBackgroundColor:[UIColor blackColor]];
[scrollView setContentSize:CGSizeMake(100 * 768, 40)];
for (int i = 0; i < [buttonArray count]; i++)
{
adButtonOutLet = [[UIButton alloc] initWithFrame:CGRectMake(140*i, 0, 135, 40)];
if (ButtonCase==0) {
[adButtonOutLet setBackgroundColor:UIColorFromRGB(0X272c2f)];
[adButtonOutLet setTitleColor:UIColorFromRGB(0x969696) forState:UIControlStateNormal];
}
else
{
if (i==0) {
adButtonOutLet.backgroundColor=UIColorFromRGB(0x000000) ;
[adButtonOutLet setTitleColor:UIColorFromRGB(0x179d95) forState:UIControlStateNormal];
}
}
adButtonOutLet.titleLabel.font=[UIFont fontWithName:@"MyriadPro" size:14.0];
[adButtonOutLet setTitle:[buttonArray objectAtIndex:i] forState:UIControlStateNormal];
adButtonOutLet.userInteractionEnabled= YES;
[adButtonOutLet setTag:i];
[adButtonOutLet addTarget:self action:@selector(adButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[scrollView addSubview:adButtonOutLet];
[self.view addSubview:scrollView];
}
}
以下是我的行动方法:
为什么不尝试将“所有按钮”样式更改为“未选定”,但“发件人参数选定”按钮上的按钮除外
-(void)adButtonAction:(UIButton*)sender{
for (int i = 0; i < [menuArray count]; i++)
{
if (sender == menuArray[i])
{
//Selected code style
}
else{
//No selected code style
}
}
}
考虑到menuArray是一个包含所有按钮的数组。
这样,当按下按钮时,可以检查和修改所有样式
希望这能帮助您或最终为您提供解决问题的线索。为什么不尝试将所有按钮样式更改为“未选定”,但“发件人参数选定”按钮上的按钮除外
-(void)adButtonAction:(UIButton*)sender{
for (int i = 0; i < [menuArray count]; i++)
{
if (sender == menuArray[i])
{
//Selected code style
}
else{
//No selected code style
}
}
}
考虑到menuArray是一个包含所有按钮的数组。
这样,当按下按钮时,可以检查和修改所有样式
希望这能帮助你,或者最终给你一个解决问题的线索。我不明白你广告中的所有内容。菜单是什么?方法,但我认为你需要的是简单的,只是适应你的方法 首先创建NSMutableArray以在按钮列表中保留引用:
for (int i = 0; i < [buttonArray count]; i++)
{
adButtonOutLet = [[UIButton alloc] initWithFrame:CGRectMake(140*i, 0, 135, 40)];
[myButtonArray addObject:adButtonOutlet];
....
与:
我不明白你广告里的所有内容什么是菜单?方法,但我认为你需要的是简单的,只是适应你的方法 首先创建NSMutableArray以在按钮列表中保留引用:
for (int i = 0; i < [buttonArray count]; i++)
{
adButtonOutLet = [[UIButton alloc] initWithFrame:CGRectMake(140*i, 0, 135, 40)];
[myButtonArray addObject:adButtonOutlet];
....
与:
应用状态vise Normal,按钮的选定标题颜色。
只需将所选按钮引用保持为弱。
当用户单击按钮时,将该按钮状态设置为选中状态,而不是正常状态。
将上次选择的按钮状态更改为“正常”,而不是“已选择”。
查看下面的代码,这些代码将对您有所帮助
UIButton *selectedButton;
-(void)adButtonAction:(UIButton*)sender
{
UIButton *tempButton = sender;
if (selectedButton && selectedButton!=tempButton)
{
[selectedButton setSelected:NO];
}
[tempButton setSelected:YES];
selectedButton = tempButton;
}
应用状态vise Normal,按钮的选定标题颜色。
只需将所选按钮引用保持为弱。
当用户单击按钮时,将该按钮状态设置为选中状态,而不是正常状态。
将上次选择的按钮状态更改为“正常”,而不是“已选择”。
查看下面的代码,这些代码将对您有所帮助
UIButton *selectedButton;
-(void)adButtonAction:(UIButton*)sender
{
UIButton *tempButton = sender;
if (selectedButton && selectedButton!=tempButton)
{
[selectedButton setSelected:NO];
}
[tempButton setSelected:YES];
selectedButton = tempButton;
}