其实问题很简单,抓住一个重点:(整个过程中其实只有两个btn的颜色和状态在改变,你点这个的时候上一个btn的颜色改变,而其他的btn的颜色不改变,直到你点击它的时候)
<span style="font-size:18px;"> NSArray *arrButton = @[@"资产负债表",@"利润表",@"现金流量表"];
for(int i = 0; i<3 ; i++)
{
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(i*375.0/3, 0, 375/3, 60)];
btn.tag = 100+i;
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn setTitle:arrButton[i] forState:UIControlStateNormal];
[headerView addSubview:btn];
if(i == 0)
{
_selectIndex = btn.tag;
[self btnAct:btn];
}
[btn addTarget:self action:@selector(btnAct:) forControlEvents:UIControlEventTouchUpInside];</span>
}
解决办法。用一个全局变量(int型)记住上一个点击的btn的tag值,然后在点击btn的时候用(viewWithTag)取得上个btn,把上个btn的颜色改为正常,而正在点击的btn的颜色改变。<span style="font-size:18px;">- (void)btnAct:(UIButton *)btn
{
UIButton *lastBtn = (UIButton *)[self viewWithTag:_selectIndex];
[lastBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
lastBtn.backgroundColor = [UIColor whiteColor];
[btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
btn.backgroundColor = [UIColor greenColor];
_selectIndex = btn.tag;
}</span>