Ios 以编程方式更改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 {

我在scrollView中有n个按钮。如果单击某个按钮,其文本颜色将发生变化,但如果单击另一个按钮,则上一个按钮的文本颜色将保持不变。我想在单击另一个按钮时将上一个按钮的文本颜色更改为默认颜色。该行为就像一个分段控件。关于这一点,请帮助我,我在下面提供了我的代码:

-(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;
}